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.

Відмінності 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#

TYPE_*

перелік Variant.Type

OP_*

перелік Variant.Operator

Математичні функції

Математичні глобальні функції, такі як 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#

weakref(obj)

GodotObject.WeakRef(obj)

instance_from_id(id)

GodotObject.InstanceFromId(id)

is_instance_id_valid(id)

GodotObject.IsInstanceIdValid(id)

is_instance_valid(obj)

GodotObject.IsInstanceValid(obj)

Поради

Іноді може бути корисним використання директиви``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

Print

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#

стверджувати

System.Diagnostics.Debug.Assert

Char

Використовуйте явне перетворення: (char)65

Convert

GD.Convert

Dict_to_inst

N/A

get_stack

System.Environment.Stacktrace

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#

EditorInterface

EditorInterface.Singleton

Строка (рядок, текст)

Використовуйте 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

string.StartsWith

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

string.Contains

Count

StringExtensions.Count (розгляньте можливість використання RegEx)

Countn

StringExtensions.CountN (розгляньте можливість використання RegEx)

Dedent

StringExtensions.Dedent

Ends_with

string.EndsWith

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

string.IsNullOrEmpty або string.IsNullOrWhiteSpace

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

string.Join

json_escape

StringExtensions.JSONEscape

left

StringExtensions.Left (розгляньте можливість використання string.Substring або string.AsSpan)

length

string.Length

lpad

string.PadLeft

lstrip

string.TrimStart

збіг

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

float.ToString or double.ToString

num_int64

int.ToString or long.ToString

num_scientific

float.ToString or double.ToString

num_uint64

uint.ToString or ulong.ToString

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

string.PadRight

rsplit

N/A

rstrip

string.TrimEnd

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

string.ToLower

to_pascal_case

StringExtensions.ToPascalCase

to_snake_case

StringExtensions.ToSnakeCase

to_upper

string.ToUpper

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#

is_empty()

IsEmpty

Сигнал

Наступні методи були перетворені у властивості зі зміненими відповідними назвами:

Скрипт

C#

get_name()

Name

get_object()

Owner

Тип Signal реалізує шаблон очікування, що означає, що його можна використовувати з ключовим словом await. Перегляньте Ключове слово чекати.

Замість використання типу Signal рекомендованим способом використання сигналів Годо в C# є використання згенерованих подій C#. Див. Сигнали C#.

Викличний

Наступні методи були перетворені у властивості зі зміненими відповідними назвами:

Скрипт

C#

get_object()

Target

get_method()

Method

Наразі 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#

get_id()

Id

is_valid()

IsValid

Основа

Структури не можуть мати конструкторів без параметрів у C #. Тому new Basis() ініціалізує всіх примітивних членів до їх значення за замовчуванням. Використовуйте Basis.Identity для еквівалента Basis() в GDScript та C ++.

Наступний метод був перетворений у властивість з іншою назвою:

Скрипт

C#

get_scale()

Scale

transform2D

Структури не можуть мати конструкторів без параметрів у C#. Тому new Transform2D() ініціалізує всіх примітивних членів до їх значення за замовчуванням. Будь ласка, використовуйте Transform2D.Identity для еквівалента Transform2D() в GDScript та C ++.

Наступні методи були перетворені у властивості зі зміненими відповідними назвами:

Скрипт

C#

get_rotation()

Rotation

get_scale()

Scale

get_skew()

Skew

transform3D

Структури не можуть мати конструктори без параметрів у C#. Таким чином, new Transform3D() ініціалізує всі примітивні члени їх значеннями за замовчуванням. Використовуйте Transform3D.Identity як еквівалент Transform3D() у GDScript і C++.

Наступні методи були перетворені у властивості зі зміненими відповідними назвами:

Скрипт

C#

get_rotation()

Rotation

get_scale()

Scale

Секція 2

Наступне поле було перетворене у властивість із дещо іншою назвою:

Скрипт

C#

end

End

Наступний метод був перетворений у властивість з іншою назвою:

Скрипт

C#

get_area()

Area

rect2i

Цей тип називається Rect2I у C# відповідно до правил іменування .NET.

Наступне поле було перетворене у властивість із дещо іншою назвою:

Скрипт

C#

end

End

Наступний метод був перетворений у властивість з іншою назвою:

Скрипт

C#

get_area()

Area

AABB

Цей тип називається Aabb у C# відповідно до правил іменування .NET.

Наступний метод був перетворений у властивість з іншою назвою:

Скрипт

C#

get_volume()

Volume

Кватерніон

Структури не можуть мати конструктори без параметрів у 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#

get_luminance()

Luminance

Наступний метод було перетворено на метод з іншою назвою:

Скрипт

C#

html(String)

FromHtml(ReadOnlySpan<char>)

Наступні методи доступні як конструктори:

Скрипт

C#

hex(int)

Color(uint)

hex64(int)

Color(ulong)

Масив

Еквівалентом упакованих масивів є 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");
}