Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Відмінності API C# в GDScript
Це (неповний) список відмінностей API між C# та GDScript.
Загальні відмінності
Як пояснюється в Основні відмінності між C# і GDScript, PascalCase використовується для доступу до API Godot у C# замість snake_case, який використовується GDScript і C++. Там, де це можливо, поля та геттери/сеттери було перетворено на властивості. Загалом, C# Godot API прагне бути настільки ідіоматичним, наскільки це можливо. Перегляньте Настанови по стилю C#, який ми радимо вам також використовувати для власного коду C#.
У GDScript установники/одержувачі властивості можна викликати безпосередньо, хоча це не рекомендується. У C# визначено лише властивість. Наприклад, щоб перекласти код GDScript x.set_name("Friend") на C#, напишіть x.Name = "Friend";.
C# IDE забезпечить intellisense, який є надзвичайно корисним під час визначення перейменованих C# API. Вбудований редактор сценаріїв Godot не підтримує C# intellisense, а також не надає багато інших інструментів розробки C#, які вважаються важливими. Перегляньте Налаштування зовнішнього редактора.
Глобальна область
Глобальні функції та деякі константи довелося перемістити до класів, оскільки C# не дозволяє оголошувати їх у просторах імен. Більшість глобальних констант були переміщені до власних переліків.
Константи
У C# лише примітивні типи можуть бути постійними. Наприклад, константу TAU замінено константою Mathf.Tau, але константу Vector2.RIGHT замінено властивістю Vector2.Right, доступною лише для читання. Це веде себе подібно до константи, але не може використовуватися в деяких контекстах, як-от оператори switch.
Глобальні константи enum були переміщені до власних enum. Наприклад, константи ERR_* було переміщено до переліку Error.
Особливі випадки:
Скрипт |
C# |
|---|---|
|
перелік |
|
перелік |
Математичні функції
Математичні глобальні функції, такі як abs, acos, asin, atan і atan2, розташовані під Mathf як Abs, Acos, Asin, Atan і Atan2. Константа PI може бути знайдена як Mathf.Pi.
C# також надає статичні класи System.Math і System.MathF, які можуть містити інші корисні математичні операції.
Функції випадковості
Глобальні функції випадковості, такі як rand_range і rand_seed, розташовані під GD. Приклад: GD.RandRange і GD.RandSeed.
Розгляньте можливість використання System.Random або, якщо вам потрібна надійна криптографічна випадковість, System.Security.Cryptography.RandomNumberGenerator.
Інші функції
Багато інших глобальних функцій, таких як print і var_to_str, знаходяться в GD. Приклад: GD.Print і GD.VarToStr.
Винятки:
Скрипт |
C# |
|---|---|
|
|
|
|
|
|
|
|
Поради
Іноді може бути корисним використовувати директиву using static. Ця директива дозволяє отримувати доступ до членів та вкладених типів класу без вказівки імені класу.
Приклад:
using static Godot.GD;
public class Test
{
static Test()
{
Print("Hello"); // Instead of GD.Print("Hello");
}
}
Повний список еквівалентів
Список глобальних функцій Godot та їхніх еквівалентів у C#:
Скрипт |
C# |
|---|---|
abs |
Mathf.Abs |
absf |
Mathf.Abs |
absi |
Mathf.Abs |
acos |
Mathf.Acos |
acosh |
Mathf.Acosh |
angle_difference |
Mathf.Angle Різниця |
asin |
Mathf.Asin |
asinh |
Mathf.Asinh |
atan |
Mathf.Atan |
atan2 |
Mathf.Atan2 |
atanh |
Mathf.Atanh |
bezier_derivative |
Mathf.BezierDerivative |
bezier_interpolate |
Mathf.BezierInterpolate |
bytes_to_var |
GD.BytestoVar |
bytes_to_var_with_objects |
GD.BytestoVarWithObjects |
ceil |
Mathf.Ceil |
ceilf |
Mathf.Ceil |
ceili |
Mathf.CeilToInt |
clamp |
Mathf.Clamp |
clampf |
Mathf.Clamp |
clampi |
Mathf.Clamp |
cos |
Mathf.Cos |
cosh |
Mathf.Cosh |
cubic_interpolate |
Mathf.CubicLnterpolate |
cubic_interpolate_angle |
Mathf.CubicLnterpolateAngle |
cubic_interpolate_angle_in_time |
Mathf.CubicLnterpolateInTime |
cubic_interpolate_in_time |
Mathf.CubicLnterpolateAngleInTime |
db_to_linear |
Mathf.DbTolinear |
deg_to_rad |
Mathf.DegToRad |
ease |
Mathf.Ease |
error_string |
Error.ToString |
exp |
Mathf.Exp |
floor |
Mathf.Floor |
floorf |
Mathf.Floor |
floori |
Mathf.FloorToInt |
fmod |
operator % |
fposmod |
Mathf.PosMod |
hash |
GD.Hash |
instance_from_id |
GodotObject.InstancefromId |
inverse_lerp |
Mathf.Inverselerp |
is_equal_approx |
Mathf.IsEqualapprox |
is_finite |
Mathf.IsFinite або float.IsFinite або double.IsFinite |
is_inf |
Mathf.IsInf або float.IsInfinity або double.IsInfinity |
is_instance_id_valid |
GodotObject.IsInstanceIdvalid |
is_instance_valid |
GodotObject.IsInstancevalid |
is_nan |
Mathf.IsNaN або float.IsNaN або double.IsNaN |
is_same |
оператор == або object.ReferenceEquals |
is_zero_approx |
Mathf.IsZeroapprox |
lerp |
Mathf.Lerp |
lerp_angle |
Mathf.Lerpangle |
lerpf |
Mathf.Lerp |
linear_to_db |
Mathf.LineartoDb |
log |
Mathf.Log |
макс. |
Mathf.Max |
maxf |
Mathf.Max |
maxi |
Mathf.Max |
min |
Mathf.Min |
minf |
Mathf.Min |
mini |
Mathf.Min |
move_toward |
Mathf.Movetoward |
Nearest_po2 |
Mathf.Nearestpo2 |
pingpong |
Mathf.PingPong |
posmod |
Mathf.PosMod |
pow |
Mathf.Pow |
GD.Print |
|
print_rich |
GD.Printrich |
print_verbose |
Use OS.IsStdoutverbose and GD.Print |
printerr |
GD.PrintErr |
print raw |
GD.PrintRaw |
prints |
GD.PrintS |
printt |
GD.PrintT |
push_error |
GD.Pusherror |
push_warning |
GD.Pushwarning |
rad_to_deg |
Mathf.RadToDeg |
rand_from_seed |
GD.RandFromseed |
randf |
GD.Randf |
randf_range |
GD.Randrange |
randfn |
GD.Randfn |
randi |
GD.Randi |
randi_range |
GD.Randrange |
randomize |
GD.Randomize |
remap |
Mathf.Remap |
rid_allocate_id |
N/A |
rid_from_int64 |
N/A |
rotate_toward |
Mathf.Rotatetoward |
round |
Mathf.Round |
roundf |
Mathf.Round |
roundi |
Mathf.RoundToInt |
seed |
GD.Seed |
sign |
Mathf.Sign |
signf |
Mathf.Sign |
signi |
Mathf.Sign |
sin |
Mathf.Sin |
sinh |
Mathf.Sinh |
Smoothstep |
Mathf.Smoothstep |
snapped |
Mathf.Snapped |
snappedf |
Mathf.Snapped |
snappedi |
Mathf.Snapped |
sqrt |
Mathf.Sqrt |
step_decimals |
Mathf.Stepdecimals |
str |
Використовуйте $ строкову інтерполяцію |
Str_to_var |
GD.StrToVar |
tan |
Mathf.Tan |
tanh |
Mathf.Tanh |
type_convert |
Variant.As<T> or GD.Convert |
type_string |
Variant.Type.ToString |
typeof |
Variant.Varianttype |
var_to_bytes |
GD.VarTobytes |
var_to_bytes_with_objects |
GD.VarTobytesWithObjects |
var_to_str |
GD.VarToStr |
weakref |
GodotObject.WeakRef |
wrap |
Mathf.Wrap |
wrapf |
Mathf.Wrap |
wrapi |
Mathf.Wrap |
Список службових функцій GDScript та їх еквівалентів у C#:
Скрипт |
C# |
|---|---|
assert |
|
char |
Використовуйте явне перетворення: |
convert |
GD.Convert |
dict_to_inst |
N/A |
get_stack |
|
Inst_to_dict |
N/A |
len |
N/A |
load |
GD.Load |
preload |
N/A |
print_debug |
N/A |
print_stack |
GD.Print(System.Environment.stackTrace) |
range |
GD.Range or System.Linq.Enumerable.range |
Type_exists |
ClassDB.Classexists(type) |
preload, так як він працює в GDScript, недоступний у C#. Використовуйте GD.Load, або ResourceLoader`.Load замість нього.
анотація @export
Використовуйте атрибут [Export] замість анотації @export GDScript. Цей атрибут також можна надати за допомогою додаткових параметрів PropertyHint і hintString. Значення за замовчуванням можна встановити шляхом призначення значення.
Приклад:
using Godot;
public partial class MyNode : Node
{
[Export]
private NodePath _nodePath;
[Export]
private string _name = "default";
[Export(PropertyHint.Range, "0,100000,1000,or_greater")]
private int _income;
[Export(PropertyHint.File, "*.png,*.jpg")]
private string _icon;
}
Дивіться також: Експортовані властивості C#.
Ключове слово signal
Щоб оголосити сигнал, використовуйте атрибут [Signal] замість ключового слова signal GDScript. Цей атрибут слід використовувати для делегата, підпис імені якого використовуватиметься для визначення сигналу. Делегат повинен мати суфікс EventHandler, event буде згенеровано в класі з такою ж назвою, але без суфікса, використовуйте назву цієї події з EmitSignal.
[Signal]
delegate void MySignalEventHandler(string willSendAString);
Дивіться також: Сигнали C#.
анотація @onready
GDScript має можливість відкладати ініціалізацію змінної-члена, доки не буде викликана функція Ready за допомогою @onready (див. анотація @onready). Наприклад:
@onready var my_label = get_node("MyLabel")
Однак C# не має цієї можливості. Для досягнення того ж ефекту вам потрібно зробити таке.
private Label _myLabel;
public override void _Ready()
{
_myLabel = GetNode<Label>("MyLabel");
}
Сінглтони
Синглтони доступні як статичні класи, а не з допомогою шаблону синглтону. Це робить код менш багатослівним, ніж це було б з властивістю Instance.
Приклад:
Input.IsActionPressed("ui_down")
Однак, у деяких дуже рідкісних випадках цього недостатньо. Наприклад, вам може знадобитися доступ до члена базового класу GodotObject, такого як Connect. Для таких випадків використання ми надаємо статичну властивість під назвою Singleton, яка повертає екземпляр singleton. Тип цього екземпляра — GodotObject.
Приклад:
Input.Singleton.JoyConnectionChanged += Input_JoyConnectionChanged;
Якщо ви розробляєте плагіни головного екрана, важливо зауважити, що EditorInterface не є статичним класом у C#, на відміну від GDScript. Таким чином, ви повинні використовувати шаблон singleton для отримання екземпляра EditorInterface:
Скрипт |
C# |
|---|---|
|
|
Строка (рядок, текст)
Використовуйте System.String (рядок). Більшість методів Godot String мають еквівалент у System.String або надаються класом StringExtensions як методи розширення.
Зверніть увагу, що рядки C# використовують кодування UTF-16, тоді як рядки Godot використовують кодування UTF-32.
Приклад:
string text = "Get up!";
string[] bigrams = text.Bigrams(); // ["Ge", "et", "t ", " u", "up", "p!"]
Рядки незмінні в .NET, тому всі методи, які маніпулюють рядком, не змінюють вихідний рядок і повертають новостворений рядок із застосованими змінами. Щоб уникнути створення кількох розподілів рядків, розгляньте можливість використання StringBuilder.
Список методів Godot's String та їх еквівалентів у C#:
Скрипт |
C# |
|---|---|
begins_with |
|
bigrams |
StringExtensions.Bigrams |
bin_to_int |
StringExtensions.BinToInt |
c_escape |
StringExtensions.CEscape |
c_unescape |
StringExtensions.CUnescape |
capitalize |
Stringextensions.Capitalize |
casecmp_to |
StringExtensions.CasecmpTo або StringExtensions.CompareTo (розгляньте можливість використання string.Equals або string.Compare) |
chr |
N/A |
contains |
|
count |
StringExtensions.Count (розгляньте можливість використання RegEx) |
countn |
StringExtensions.CountN (розгляньте можливість використання RegEx) |
dedent |
StringExtensions.Dedent |
ends_with |
|
erase |
string.Remove (Розгляньте можливість використання StringBuilder для маніпулювання рядками) |
find |
StringExtensions.Find (розгляньте можливість використання string.IndexOf або string.IndexOfAny) |
findn |
StringExtensions.FindN (розгляньте можливість використання string.IndexOf або string.IndexOfAny) |
format |
Використовуйте $ строкову інтерполяцію |
get_base_dir |
StringExtensions.GetbaseDir |
get_basename |
StringExtensions.GetbaseName |
get_extension |
StringExtensions.Getextension |
get_file |
StringExtensions.GetFile |
get_slice |
N/A |
get_slice_count |
N/A |
get_slicec |
N/A |
hash |
StringExtensions.Hash (розгляньте можливість використання object.GetHashCode, якщо вам не потрібно гарантувати таку саму поведінку, як у GDScript) |
hex_decode |
StringExtensions.HexDecode (розгляньте можливість використання System.Convert.FromHexString) |
hex_to_int |
StringExtensions.HexToInt (розгляньте можливість використання int.Parse або long.Parse з System.Globalization.NumberStyles.HexNumber) |
humanize_size |
N/A |
indent |
StringExtensions.Indent |
insert |
string.Insert (розгляньте можливість використання StringBuilder для маніпулювання рядками) |
is_absolute_path |
StringExtensions.IsAbsolutePath |
is_empty |
|
is_relative_path |
StringExtensions.IsRelativePath |
is_subsequence_of |
StringExtensions.IsSubsequenceOf |
is_subsequence_ofn |
StringExtensions.IsSubsequenceOfN |
is_valid_filename |
StringExtensions.IsValidFileName |
is_valid_float |
StringExtensions.IsValidFloat (розгляньте можливість використання float.TryParse або double.TryParse) |
is_valid_hex_number |
StringExtensions.IsValidHexNumber |
is_valid_html_color |
StringExtensions.IsValidHtmlColor |
is_valid_identifier |
StringExtensions.IsValidIdentifier |
is_valid_int |
StringExtensions.IsValidInt (розгляньте можливість використання int.TryParse або long.TryParse) |
is_valid_ip_address |
StringExtensions.IsValidIPAddress |
join |
|
json_escape |
StringExtensions.JSONEscape |
left |
StringExtensions.Left (розгляньте можливість використання string.Substring або string.AsSpan) |
length |
|
lpad |
|
lstrip |
|
match |
StringExtensions.Match (розгляньте можливість використання RegEx) |
matchn |
StringExtensions.MatchN (розгляньте можливість використання RegEx) |
md5_buffer |
StringExtensions.Md5Buffer (розгляньте можливість використання System.Security.Cryptography.MD5.HashData) |
md5_text |
StringExtensions.Md5Text (розгляньте можливість використання System.Security.Cryptography.MD5.HashData з StringExtensions.HexEncode) |
naturalnocasecmp_to |
Н/З (розгляньте можливість використання string.Equals або string.Compare) |
nocasecmp_to |
StringExtensions.NocasecmpTo або StringExtensions.CompareTo (розгляньте можливість використання string.Equals або string.Compare) |
num |
|
num_int64 |
|
num_scientific |
|
num_uint64 |
|
pad_decimals |
StringExtensions.PadDecimals |
pad_zeros |
StringExtensions.PadZeros |
path_join |
StringExtensions.PathJoin |
repeat |
Використовуйте конструктор рядків або StringBuilder |
replace |
string.Replace або RegEx |
replacen |
StringExtensions.ReplaceN (розгляньте можливість використання string.Replace або RegEx) |
reverse |
N/A |
rfind |
StringExtensions.RFind (розгляньте можливість використання string.LastIndexOf або string.LastIndexOfAny) |
rfindn |
StringExtensions.RFindN (розгляньте можливість використання string.LastIndexOf або string.LastIndexOfAny) |
right |
StringExtensions.Right (розгляньте можливість використання string.Substring або string.AsSpan) |
rpad |
|
rsplit |
N/A |
rstrip |
|
sha1_buffer |
StringExtensions.Sha1Buffer (розгляньте можливість використання System.Security.Cryptography.SHA1.HashData) |
sha1_text |
StringExtensions.Sha1Text (розгляньте можливість використання System.Security.Cryptography.SHA1.HashData з StringExtensions.HexEncode) |
sha256_buffer |
StringExtensions.Sha256Buffer (розгляньте можливість використання System.Security.Cryptography.SHA256.HashData) |
sha256_text |
StringExtensions.Sha256Text (розгляньте можливість використання System.Security.Cryptography.SHA256.HashData з StringExtensions.HexEncode) |
similarity |
StringExtensions.Similarity |
simplify_path |
StringExtensions.SimplifyPath |
split |
StringExtensions.Split (розгляньте можливість використання string.Split) |
split_floats |
StringExtensions.SplitFloat |
strip_edges |
StringExtensions.StripEdges (розгляньте можливість використання string.Trim, string.TrimStart або string.TrimEnd) |
strip_escapes |
StringExtensions.StripEscapes |
substr |
StringExtensions.Substr (розгляньте можливість використання string.Substring або string.AsSpan) |
to_ascii_buffer |
StringExtensions.ToAsciiBuffer (розгляньте можливість використання System.Text.Encoding.ASCII.GetBytes) |
to_camel_case |
StringExtensions.ToCamelCase |
to_float |
StringExtensions.ToFloat (розгляньте можливість використання float.TryParse або double.TryParse) |
to_int |
StringExtensions.ToInt (розгляньте можливість використання int.TryParse або long.TryParse) |
to_lower |
|
to_pascal_case |
StringExtensions.ToPascalCase |
to_snake_case |
StringExtensions.ToSnakeCase |
to_upper |
|
to_utf16_buffer |
StringExtensions.ToUtf16Buffer (розгляньте можливість використання System.Text.Encoding.UTF16.GetBytes) |
to_utf32_buffer |
StringExtensions.ToUtf32Buffer (розгляньте можливість використання System.Text.Encoding.UTF32.GetBytes) |
to_utf8_buffer |
StringExtensions.ToUtf8Buffer (розгляньте можливість використання System.Text.Encoding.UTF8.GetBytes) |
to_wchar_buffer |
StringExtensions.ToUtf16Buffer у Windows і StringExtensions.ToUtf32Buffer на інших платформах |
trim_prefix |
StringExtensions.TrimPrefix |
trim_suffix |
StringExtensions.TrimSuffix |
unicode_at |
string[int] індексатор |
uri_decode |
StringExtensions.URIDecode (розгляньте можливість використання System.Uri.UnescapeDataString) |
uri_encode |
StringExtensions.URIEncode (розгляньте можливість використання System.Uri.EscapeDataString) |
validate_node_name |
StringExtensions.ValidatenodeName |
xml_escape |
StringExtensions.XMLEscape |
xml_unescape |
StringExtensions.XMLunescape |
Список методів Godot PackedByteArray, які створюють рядок, і їх еквівалент C#:
Скрипт |
C# |
|---|---|
get_string_from_ascii |
StringExtensions.GetStringFromAscii (розгляньте можливість використання System.Text.Encoding.ASCII.GetString) |
get_string_from_utf16 |
StringExtensions.GetStringFromUtf16 (розгляньте можливість використання System.Text.Encoding.UTF16.GetString) |
get_string_from_utf32 |
StringExtensions.GetStringFromUtf32 (розгляньте можливість використання System.Text.Encoding.UTF32.GetString) |
get_string_from_utf8 |
StringExtensions.GetStringFromUtf8 (розгляньте можливість використання System.Text.Encoding.UTF8.GetString) |
hex_encode |
StringExtensions.HexEncode (розгляньте можливість використання System.Convert.ToHexString) |
Примітка
.NET надає утиліти шляхів у класі System.IO.Path. Їх можна використовувати лише зі шляхами рідної ОС, а не зі шляхами Godot (шляхи, які починаються з res:// або user://). Перегляньте Шляхи до файлів у проектах Godot.
Шлях до вузла
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Сигнал
Наступні методи були перетворені у властивості зі зміненими відповідними назвами:
Скрипт |
C# |
|---|---|
|
|
|
|
Тип Signal реалізує шаблон очікування, що означає, що його можна використовувати з ключовим словом await. Перегляньте Ключове слово чекати.
Замість використання типу Signal рекомендованим способом використання сигналів Godot в C# є використання згенерованих подій C#. Див. Сигнали C#.
Викличний
Наступні методи були перетворені у властивості зі зміненими відповідними назвами:
Скрипт |
C# |
|---|---|
|
|
|
|
Наразі C# підтримує Callable, якщо виконується одне з наступного:
Callableбуло створено за допомогою типу C#Callable.Callableє базовою версієюCallableдвигуна. СпеціальніCallableне підтримуються.Callableє нестандартним, якщо виконується будь-яке з наступного:Callableмає зв’язану інформацію (Callableстворені за допомогоюbind/unbindне підтримуються).Callableбуло створено з інших мов через GDExtension API.
Деякі методи, такі як bind і unbind, не реалізовані, замість цього використовуйте лямбда-вирази:
string name = "John Doe";
Callable callable = Callable.From(() => SayHello(name));
void SayHello(string name)
{
GD.Print($"Hello {name}");
}
Лямбда фіксує змінну name, щоб її можна було зв’язати з методом SayHello.
RID
Цей тип називається Rid у C# відповідно до правил іменування .NET.
Наступні методи були перетворені у властивості зі зміненими відповідними назвами:
Скрипт |
C# |
|---|---|
|
|
|
|
Основа
Структури не можуть мати конструкторів без параметрів у C #. Тому new Basis() ініціалізує всіх примітивних членів до їх значення за замовчуванням. Використовуйте Basis.Identity для еквівалента Basis() в GDScript та C ++.
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
transform2D
Структури не можуть мати конструкторів без параметрів у C#. Тому new Transform2D() ініціалізує всіх примітивних членів до їх значення за замовчуванням. Будь ласка, використовуйте Transform2D.Identity для еквівалента Transform2D() в GDScript та C ++.
Наступні методи були перетворені у властивості зі зміненими відповідними назвами:
Скрипт |
C# |
|---|---|
|
|
|
|
|
|
Transform3D
Структури не можуть мати конструктори без параметрів у C#. Таким чином, new Transform3D() ініціалізує всі примітивні члени їх значеннями за замовчуванням. Використовуйте Transform3D.Identity як еквівалент Transform3D() у GDScript і C++.
Наступні методи були перетворені у властивості зі зміненими відповідними назвами:
Скрипт |
C# |
|---|---|
|
|
|
|
Секція 2
Наступне поле було перетворене у властивість із дещо іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Rect2i
Цей тип називається Rect2I у C# відповідно до правил іменування .NET.
Наступне поле було перетворене у властивість із дещо іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
AABB
Цей тип називається Aabb у C# відповідно до правил іменування .NET.
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Кватерніон
Структури не можуть мати конструктори без параметрів у C#. Таким чином, new Quaternion() ініціалізує всі примітивні члени їх значенням за замовчуванням. Використовуйте Quaternion.Identity як еквівалент Quaternion() у GDScript і C++.
Проекція
Структури не можуть мати конструктори без параметрів у C#. Таким чином, new Projection() ініціалізує всі примітивні члени їх значенням за замовчуванням. Використовуйте Projection.Identity як еквівалент Projection() у GDScript і C++.
Колір
Структури не можуть мати конструктори без параметрів у C#. Таким чином, new Color() ініціалізує всі примітивні елементи їх значенням за замовчуванням (яке представляє прозорий чорний колір). Будь ласка, використовуйте Colors.Black як еквівалент Color() у GDScript і C++.
Глобальний метод Color8 для створення кольору з байтів доступний як статичний метод у типі Color.
Константи кольору доступні в статичному класі Кольори як властивості лише для читання.
Наступний метод був перетворений у властивість з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Наступний метод було перетворено на метод з іншою назвою:
Скрипт |
C# |
|---|---|
|
|
Наступні методи доступні як конструктори:
Скрипт |
C# |
|---|---|
|
|
|
|
Масив
Еквівалентом упакованих масивів є System.Array.
Дивіться також PackedArray in C#.
Використовуйте Godot.Collections.Array для нетипового масиву Variant. Godot.Collections.Array<T> — це типобезпечна обгортка навколо Godot.Collections.Array.
Дивіться також Array in C#.
Словник
Використовуйте Godot.Collections.Dictionary для нетипового словника Variant. Godot.Collections.Dictionary<TKey, TValue> — це типобезпечна оболонка Godot.Collections.Dictionary.
Дивіться також Dictionary in C#.
Варіант
Godot.Variant використовується для представлення рідного типу Godot Variant. Будь-який Variant-compatible type можна конвертувати з/в нього.
Дивіться також: Варіант C#.
Взаємодія з іншими мовами скриптів
Це широко пояснюється в Багатомовні скрипти.
Ключове слово чекати
Щось подібне до ключового слова await GDScript можна досягти за допомогою C# ключове слово wait.
Ключове слово await у C# можна використовувати з будь-яким виразом очікування. Він зазвичай використовується з операндами типу Task, Task<TResult>, ValueTask або ValueTask<TResult>.
Вираз t є очікуваним, якщо виконується одне з наступного:
tмає типдинамічнийпід час компіляції.tмає доступний екземпляр або метод розширення під назвоюGetAwaiterбез параметрів і параметрів типу, а також тип поверненняA, для якого виконуються всі наступні умови:Aреалізує інтерфейсSystem.Runtime.CompilerServices.INotifyCompletion.Aмає доступну, читабельну властивість екземпляраIsCompletedтипуbool.Aмає доступний метод екземпляраGetResultбез параметрів і без параметрів типу.
Еквівалент очікування сигналу в GDScript можна досягти за допомогою ключового слова await і GodotObject.ToSignal.
Приклад:
public async Task SomeFunction()
{
await ToSignal(timer, Timer.SignalName.Timeout);
GD.Print("After timeout");
}