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");
}
}
Повний список еквівалентів
Список глобальних функцій Годо та їхніх еквівалентів у C#:
Скрипт |
C# |
---|---|
Abs |
Mathf.Abs |
Absf |
Mathf.Abs |
Absi |
Mathf.Abs |
Acos |
Mathf.Acos |
Acosh |
Mathf.Acosh |
різниця_кутів |
Mathf.Angle Різниця |
Asin |
Mathf.Asin |
Asinh |
Mathf.Asinh |
Atan |
Mathf.Atan |
Atan2 |
Mathf.Atan2 |
Atanh |
Mathf.Atanh |
похідна_безьє |
Mathf.Похідна Безьє |
Bezier_interpolate |
Mathf.Bezier Interpolate |
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# |
---|---|
стверджувати |
|
Char |
Використовуйте явне перетворення: |
Convert |
GD.Convert |
Dict_to_inst |
N/A |
get_stack |
|
Inst_to_dict |
N/A |
Len |
N/A |
Load |
GD.Load |
пре завантаження |
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;
If you are developing main screen plugins, it is essential to note that
EditorInterface
is not a static class in C#, unlike in GDScript.
Therefore, you must use the singleton pattern to obtain an instance of the
EditorInterface
:
Скрипт |
C# |
---|---|
|
|
Строка (рядок, текст)
Використовуйте System.String
(рядок
). Більшість методів Godot String мають еквівалент у System.String
або надаються класом StringExtensions
як методи розширення.
Приклад:
string text = "Get up!";
string[] bigrams = text.Bigrams(); // ["Ge", "et", "t ", " u", "up", "p!"]
Рядки незмінні в .NET, тому всі методи, які маніпулюють рядком, не змінюють вихідний рядок і повертають новостворений рядок із застосованими змінами. Щоб уникнути створення кількох розподілів рядків, розгляньте можливість використання StringBuilder.
Список методів Godot's String та їх еквівалентів у C#:
Скрипт |
C# |
---|---|
Degins_with |
|
Digrams |
StringExtensions.Bigrams |
Din_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 |
|
збіг |
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
рекомендованим способом використання сигналів Годо в 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
.
Дивіться також Масив у C#.
Словник
Використовуйте Godot.Collections.Dictionary
для нетипового словника Variant
. Godot.Collections.Dictionary<TKey, TValue>
— це типобезпечна оболонка Godot.Collections.Dictionary
.
Дивіться також Словник у 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");
}