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.

Differenze dell'API C# rispetto a GDScript

Questa è un elenco (incompleta) di differenze di API tra C# e GDScript.

Differenze generali

Come spiegato in Differenze generali tra C# e GDScript, il PascalCase è usato per accedere alle API di Godot in C# al posto del snake_case usato da GDScript e C++. Ove possibile, campi e getter/setter sono stati convertiti in proprietà. In generale, l'API di Godot in C# cerca di essere il più idiomatica possibile. Consultate la Guida di stile C#, che vi invitiamo a utilizzare anche per il proprio codice C#.

In GDScript, i setter/getter di una proprietà si possono chiamare direttamente, sebbene ciò non sia consigliato. In C#, solo la proprietà è definita. Ad esempio, per tradurre il codice GDScript x.set_name("Friend") in C#, scrivere x.Name = "Friend";.

Un IDE C# fornirà IntelliSense, estremamente utile per scoprire le API rinominate in C#. L'editor integrato di script in Godot non supporta IntelliSense per C#, e non fornisce molti altri strumenti di sviluppo per C# che sono considerati essenziali. Consulta Configurare un editor esterno.

Ambito globale

Le funzioni globali e alcune costanti si sono dovute spostare in classi, poiché C# non consente di dichiararle nei namespace. La maggior parte delle costanti globali è stata spostata nelle proprie enumerazioni.

Costanti

In C#, solo i tipi primitivi possono essere costanti. Ad esempio, la costante TAU è sostituita dalla costante Mathf.Tau, ma la costante Vector2.RIGHT è sostituita dalla proprietà di sola lettura Vector2.Right. Questa si comporta in modo simile a una costante, ma non può essere utilizzata in alcuni contesti come istruzioni switch.

Le costanti delle enumerazioni globali sono state spostate nelle proprie enumerazioni. Ad esempio, le costanti ERR_* sono state spostate nell'enumerazione Error.

Casi speciali:

GDScript

C#

TYPE_*

Variant.Type (enumerazione)

OP_*

Variant.Operator (enumerazione)

Funzioni matematiche

Le funzioni matematiche globali, come abs, acos, asin, atan e atan2, sono situate in Mathf sotto forma di Abs, Acos, Asin, Atan e Atan2. La costante PI si trova come Mathf.Pi.

C# fornisce anche le classi statiche System.Math e System.MathF che possono contenere altre utili operazioni matematiche.

Funzioni Random

Le funzioni globali Random, come rand_range e rand_seed, si trovano in GD. Esempio: GD.RandRange e GD.RandSeed.

Si consiglia di utilizzare System.Random oppure, se è necessaria un'elevata casualità crittografica, System.Security.Cryptography.RandomNumberGenerator.

Altre funzioni

Molte altre funzioni globali come print e var_to_str si trovano sotto GD. Esempio: GD.Print e GD.VarToStr.

Eccezioni:

GDScript

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)

Suggerimenti

A volte, può essere utile utilizzare la direttiva using static. Questa direttiva consente di accedere ai membri e ai tipi annidati di una classe senza specificare il nome della classe.

Esempio:

using static Godot.GD;

public class Test
{
    static Test()
    {
        Print("Hello"); // Instead of GD.Print("Hello");
    }
}

Elenco completo di equivalenze

Elenco delle funzioni di ambito globale di Godot e dei loro equivalenti in C#:

GDScript

C#

abs

Mathf.Abs

absf

Mathf.Abs

absi

Mathf.Abs

acos

Mathf.Acos

acosh

Mathf.Acosh

angle_difference

Mathf.AngleDifference

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.CubicInterpolate

cubic_interpolate_angle

Mathf.CubicInterpolateAngle

cubic_interpolate_angle_in_time

Mathf.CubicInterpolateInTime

cubic_interpolate_in_time

Mathf.CubicInterpolateAngleInTime

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

Operatore %

fposmod

Mathf.PosMod

hash

GD.Hash

instance_from_id

GodotObject.InstanceFromId

inverse_lerp

Mathf.InverseLerp

is_equal_approx

Mathf.IsEqualApprox

is_finite

Mathf.IsFinite o float.IsFinite o double.IsFinite

is_inf

Mathf.IsInf o float.IsInfinity o double.IsInfinity

is_instance_id_valid

GodotObject.IsInstanceIdValid

is_instance_valid

GodotObject.IsInstanceValid

is_nan

Mathf.IsNaN or float.IsNaN or double.IsNaN

is_same

Operatore == o 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

max

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

Utilizzare OS.IsStdoutVerbose e GD.Print

printerr

GD.PrintErr

printraw

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

Usare $ string interpolation

str_to_var

GD.StrToVar

tan

Mathf.Tan

tanh

Mathf.Tanh

type_convert

Variant.As<T> o 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

Elenco delle funzioni di utilità in GDScript e dei loro equivalenti in C#:

GDScript

C#

assert

System.Diagnostics.Debug.Assert

char

Utilizzare la conversione esplicita: (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

preload

N/A

print_debug

N/A

print_stack

GD.Print(System.Environment.StackTrace)

range

GD.Range o System.Linq.Enumerable.Range

type_exists

ClassDB.ClassExists(type)

preload, così come funziona in GDScript, non è disponibile in C#. Utilizzare invece GD.Load o ResourceLoader.Load.

Annotazione @export

Utilizzare l'attributo [Export] al posto dell'annotazione @export di GDScript. Questo attributo si può anche fornire con i parametri facoltativi PropertyHint e hintString. È possibile impostare i valori predefiniti assegnando un valore.

Esempio:

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;
}

Vedi anche : Proprietà esportate in C#.

Parola chiave signal

Utilizzare l'attributo [Signal] per dichiarare un segnale al posto della parola chiave signal di GDScript. Questo attributo deve essere utilizzato su un delegate`, la cui firma del nome sarà utilizzata per definire il segnale. Il delegate deve avere il suffisso EventHandler; un event sarà generato nella classe con lo stesso nome ma senza il suffisso; utilizzare il nome di quell'evento con EmitSignal.

[Signal]
delegate void MySignalEventHandler(string willSendAString);

Vedi anche: Segnali in C#.

Annotazione @onready

GDScript è possibile rinviare l'inizializzazione di una variabile membro fino a quando la funzione ready non viene chiamata con @onready (cfr. L'annotazione @onready). Ad esempio:

@onready var my_label = get_node("MyLabel")

Tuttavia, ciò non è possibile in C#. Per ottenere lo stesso effetto, è necessario procedere in questo modo.

private Label _myLabel;

public override void _Ready()
{
    _myLabel = GetNode<Label>("MyLabel");
}

Singleton

I singleton sono disponibili come classi statiche anziché utilizzare il pattern singleton. Ciò per rendere il codice meno verboso di quello che sarebbe con una proprietà Instance.

Esempio:

Input.IsActionPressed("ui_down")

Tuttavia, in alcuni casi molto rari ciò non è sufficiente. Ad esempio, potresti voler accedere a un membro della classe base GodotObject, come Connect. Per questi casi d'uso forniamo una proprietà statica denominata Singleton che restituisce l'istanza singleton. Il tipo di questa istanza è GodotObject.

Esempio:

Input.Singleton.JoyConnectionChanged += Input_JoyConnectionChanged;

Se si sviluppano plugin per la schermata principale, è fondamentale notare che EditorInterface non è una classe statica in C#, a differenza di GDScript. Pertanto, è necessario utilizzare il pattern singleton per ottenere un'istanza di EditorInterface:

GDScript

C#

EditorInterface

EditorInterface.Singleton

Stringa

Usa System.String (string). La maggior parte dei metodi di String in Godot ha un equivalente in System.String o sono forniti dalla classe StringExtensions come metodi di estensione.

Si noti che le stringhe in C# utilizzano la codifica UTF-16, mentre le stringhe in Godot utilizzano la codifica UTF-32.

Esempio:

string text = "Get up!";
string[] bigrams = text.Bigrams(); // ["Ge", "et", "t ", " u", "up", "p!"]

Le stringhe sono immutabili in .NET, quindi tutti i metodi che manipolano una stringa non modificano la stringa originale e restituiscono una stringa appena creata con le modifiche applicate. Per evitare di creare più allocazioni di stringhe, si consiglia di utilizzare uno StringBuilder.

Elenco dei metodi di String in Godot e dei loro equivalenti in C#:

GDScript

C#

begins_with

string.StartsWith

bigrams

StringExtensions.Bigrams

bin_to_int

StringExtensions.BinToInt

c_escape

StringExtensions.CEscape

c_unescape

StringExtensions.CUnescape

capitalize

StringExtensions.Capitalize

casecmp_to

StringExtensions.CasecmpTo o StringExtensions.CompareTo (Si consiglia di usare string.Equals o string.Compare)

chr

N/A

contains

string.Contains

count

StringExtensions.Count (Si consiglia di usare RegEx)

countn

StringExtensions.CountN (Si consiglia di usare RegEx)

dedent

StringExtensions.Dedent

ends_with

string.EndsWith

erase

string.Remove (Si consiglia di usare StringBuilder per manipolare le stringhe)

find

StringExtensions.Find (Si consiglia di usare string.IndexOf o string.IndexOfAny)

findn

StringExtensions.FindN (Si consiglia di usare string.IndexOf o string.IndexOfAny)

format

Usare $ string interpolation

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 (Si consiglia di usare object.GetHashCode almeno che non sia necessario garantire lo stesso comportamento di GDScript)

hex_decode

StringExtensions.HexDecode (Si consiglia di usare System.Convert.FromHexString)

hex_to_int

StringExtensions.HexToInt (Si consiglia di usare int.Parse o long.Parse con System.Globalization.NumberStyles.HexNumber)

humanize_size

N/A

indent

StringExtensions.Indent

insert

string.Insert (Si consiglia di usare StringBuilder per manipolare le stringhe)

is_absolute_path

StringExtensions.IsAbsolutePath

is_empty

string.IsNullOrEmpty o 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 (Si consiglia di usare float.TryParse o double.TryParse)

is_valid_hex_number

StringExtensions.IsValidHexNumber

is_valid_html_color

StringExtensions.IsValidHtmlColor

is_valid_identifier

StringExtensions.IsValidIdentifier

is_valid_int

StringExtensions.IsValidInt (Si consiglia di usare int.TryParse o long.TryParse)

is_valid_ip_address

StringExtensions.IsValidIPAddress

join

string.Join

json_escape

StringExtensions.JSONEscape

left

StringExtensions.Left (Si consiglia di usare string.Substring o string.AsSpan)

length

string.Length

lpad

string.PadLeft

lstrip

string.TrimStart

match

StringExtensions.Match (Si consiglia di usare RegEx)

matchn

StringExtensions.MatchN (Si consiglia di usare RegEx)

md5_buffer

StringExtensions.Md5Buffer (Si consiglia di usare System.Security.Cryptography.MD5.HashData)

md5_text

StringExtensions.Md5Text (Si consiglia di usare System.Security.Cryptography.MD5.HashData con StringExtensions.HexEncode)

naturalnocasecmp_to

N/A (Si consiglia di usare string.Equals o string.Compare)

nocasecmp_to

StringExtensions.NocasecmpTo or StringExtensions.CompareTo (Si consiglia di usare string.Equals o string.Compare)

num

float.ToString o double.ToString

num_int64

int.ToString o long.ToString

num_scientific

float.ToString o double.ToString

num_uint64

uint.ToString o ulong.ToString

pad_decimals

StringExtensions.PadDecimals

pad_zeros

StringExtensions.PadZeros

path_join

StringExtensions.PathJoin

repeat

Utilizzare string constructor o uno StringBuilder

replace

string.Replace o RegEx

replacen

StringExtensions.ReplaceN (Si consiglia di usare string.Replace o RegEx)

reverse

N/A

rfind

StringExtensions.RFind (Si consiglia di usare string.LastIndexOf o string.LastIndexOfAny)

rfindn

StringExtensions.RFindN (Si consiglia di usare string.LastIndexOf o string.LastIndexOfAny)

right

StringExtensions.Right (Si consiglia di usare string.Substring o string.AsSpan)

rpad

string.PadRight

rsplit

N/A

rstrip

string.TrimEnd

sha1_buffer

StringExtensions.Sha1Buffer (Si consiglia di usare System.Security.Cryptography.SHA1.HashData)

sha1_text

StringExtensions.Sha1Text (Si consiglia di usare System.Security.Cryptography.SHA1.HashData con StringExtensions.HexEncode)

sha256_buffer

StringExtensions.Sha256Buffer (Si consiglia di usare System.Security.Cryptography.SHA256.HashData)

sha256_text

StringExtensions.Sha256Text (Si consiglia di usare System.Security.Cryptography.SHA256.HashData con StringExtensions.HexEncode)

similarity

StringExtensions.Similarity

simplify_path

StringExtensions.SimplifyPath

split

StringExtensions.Split (Si consiglia di usare string.Split)

split_floats

StringExtensions.SplitFloat

strip_edges

StringExtensions.StripEdges (Si consiglia di usare string.Trim, string.TrimStart o string.TrimEnd)

strip_escapes

StringExtensions.StripEscapes

substr

StringExtensions.Substr (Si consiglia di usare string.Substring o string.AsSpan)

to_ascii_buffer

StringExtensions.ToAsciiBuffer (Si consiglia di usare System.Text.Encoding.ASCII.GetBytes)

to_camel_case

StringExtensions.ToCamelCase

to_float

StringExtensions.ToFloat (Si consiglia di usare float.TryParse o double.TryParse)

to_int

StringExtensions.ToInt (Si consiglia di usare int.TryParse o 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 (Si consiglia di usare System.Text.Encoding.UTF16.GetBytes)

to_utf32_buffer

StringExtensions.ToUtf32Buffer (Si consiglia di usare System.Text.Encoding.UTF32.GetBytes)

to_utf8_buffer

StringExtensions.ToUtf8Buffer (Si consiglia di usare System.Text.Encoding.UTF8.GetBytes)

to_wchar_buffer

StringExtensions.ToUtf16Buffer in Windows e StringExtensions.ToUtf32Buffer in altre piattaforme

trim_prefix

StringExtensions.TrimPrefix

trim_suffix

StringExtensions.TrimSuffix

unicode_at

Indicizzatore string[int]

uri_decode

StringExtensions.URIDecode (Si consiglia di usare System.Uri.UnescapeDataString)

uri_encode

StringExtensions.URIEncode (Si consiglia di usare System.Uri.EscapeDataString)

validate_node_name

StringExtensions.ValidateNodeName

xml_escape

StringExtensions.XMLEscape

xml_unescape

StringExtensions.XMLUnescape

Elenco dei metodi di PackedByteArray in Godot che creano una stringa e i loro equivalenti in C#:

GDScript

C#

get_string_from_ascii

StringExtensions.GetStringFromAscii (Si consiglia di usare System.Text.Encoding.ASCII.GetString)

get_string_from_utf16

StringExtensions.GetStringFromUtf16 (Si consiglia di usare System.Text.Encoding.UTF16.GetString)

get_string_from_utf32

StringExtensions.GetStringFromUtf32 (Si consiglia di usare System.Text.Encoding.UTF32.GetString)

get_string_from_utf8

StringExtensions.GetStringFromUtf8 (Si consiglia di usare System.Text.Encoding.UTF8.GetString)

hex_encode

StringExtensions.HexEncode (Si consiglia di usare System.Convert.ToHexString)

Nota

.NET fornisce metodi di utilità per i percorsi nella classe System.IO.Path. Si possono utilizzare solo con i percorsi nativi del sistema operativo, non con i percorsi di Godot (percorsi che iniziano con res:// o user://). Vedi Percorsi di file nei progetti di Godot.

NodePath

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

is_empty()

IsEmpty

Segnale

I seguenti metodi sono stati convertiti in proprietà con i loro corrispondenti nomi modificati:

GDScript

C#

get_name()

Name

get_object()

Owner

Il tipo Signal implementa il pattern awaitable, il che significa che si può utilizzare con la parola chiave await. Vedere Parola chiave await.

Invece di usare il tipo Signal, il modo consigliato per usare i segnali di Godot in C# è usare gli eventi C# generati. Vedi Segnali in C#.

Callable

I seguenti metodi sono stati convertiti in proprietà con i loro corrispondenti nomi modificati:

GDScript

C#

get_object()

Target

get_method()

Method

Attualmente C# supporta Callable se vale una delle seguenti condizioni:

  • Callable è stato creato attraverso il tipo Callable di C#.

  • Callable è una versione base del Callable del motore. I Callable personalizzati non sono supportati. Un Callable è personalizzato quando vale una delle seguenti condizioni:

    • Il Callable ha informazioni vincolate (i Callable creati con bind/unbind non sono supportati).

    • Il Callable è stato creato da altri linguaggi tramite l'API di GDExtension.

Alcuni metodi come bind e unbind non sono implementati, al loro posto si utilizzano le lambda:

string name = "John Doe";
Callable callable = Callable.From(() => SayHello(name));

void SayHello(string name)
{
    GD.Print($"Hello {name}");
}

La lambda cattura la variabile name in modo che si possa vincolare al metodo SayHello.

RID

Questo tipo è denominato Rid in C# per rispettare la convenzione di denominazione .NET.

I seguenti metodi sono stati convertiti in proprietà con i loro corrispondenti nomi modificati:

GDScript

C#

get_id()

Id

is_valid()

IsValid

Basis

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Basis() inizializza tutti i membri primitivi al loro valore predefinito. Utilizzare Basis.Identity per l'equivalente di Basis() in GDScript e C++.

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

get_scale()

Scale

Transform2D

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Transform2D() inizializza tutti i membri primitivi al loro valore predefinito. Si prega di utilizzare Transform2D.Identity per l'equivalente di Transform2D() in GDScript e C++.

I seguenti metodi sono stati convertiti in proprietà con i loro corrispondenti nomi modificati:

GDScript

C#

get_rotation()

Rotation

get_scale()

Scale

get_skew()

Skew

Transform3D

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Transform3D() inizializza tutti i membri primitivi al loro valore predefinito. Si prega di utilizzare Transform3D.Identity per l'equivalente di Transform3D() in GDScript e C++.

I seguenti metodi sono stati convertiti in proprietà con i loro corrispondenti nomi modificati:

GDScript

C#

get_rotation()

Rotation

get_scale()

Scale

Rect2

Il seguente campo è stato convertito in una proprietà con un nome leggermente diverso:

GDScript

C#

end

End

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

get_area()

Area

Rect2i

Questo tipo è denominato Rect2I in C# per rispettare la convenzione di denominazione .NET.

Il seguente campo è stato convertito in una proprietà con un nome leggermente diverso:

GDScript

C#

end

End

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

get_area()

Area

AABB

Questo tipo è denominato Aabb in C# per rispettare la convenzione di denominazione .NET.

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

get_volume()

Volume

Quaternion

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Quaternion() inizializza tutti i membri primitivi al loro valore predefinito. Si prega di utilizzare Quaternion.Identity per l'equivalente di Quaternion() in GDScript e C++.

Projection

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Projection() inizializza tutti i membri primitivi al loro valore predefinito. Si prega di utilizzare Projection.Identity per l'equivalente di Projection() in GDScript e C++.

Colore

Le strutture non possono avere costruttori senza parametri in C#. Pertanto, new Color() inizializza tutti i membri primitivi al loro valore predefinito (che rappresenta il colore nero trasparente). Si prega di utilizzare Color.Black per l'equivalente di Color() in GDScript e C++.

Il metodo globale Color8 per costruire un colore da byte è disponibile come metodo statico nel tipo Color.

Le costanti di Color sono disponibili nella classe statica Colors come proprietà di sola lettura.

Il seguente metodo è stato convertito in una proprietà con un nome diverso:

GDScript

C#

get_luminance()

Luminance

Il seguente metodo è stato convertito in un metodo con un nome diverso:

GDScript

C#

html(String)

FromHtml(ReadOnlySpan<char>)

I seguenti metodi sono disponibili come costruttori:

GDScript

C#

hex(int)

Color(uint)

hex64(int)

Color(ulong)

Array

L'equivalente degli array impacchettati è System.Array.

Consulta anche PackedArray in C#.

Utilizzare Godot.Collections.Array per un array Variant non tipizzato. Godot.Collections.Array<T> è un wrapper di tipo sicuro per Godot.Collections.Array.

Consulta anche Array in C#.

Dizionario

Utilizzare Godot.Collections.Dictionary per un dizionario Variant non tipizzato. Godot.Collections.Dictionary<TKey, TValue> è un wrapper di tipo sicuro per Godot.Collections.Dictionary.

Consulta anche Dictionary in C#.

Variant

Godot.Variant è utilizzato per rappresentare il tipo nativo di Godot Variant. Qualsiasi tipo compatibile con Variant può essere convertito da/a esso.

Consulta anche Variante C#.

Comunicazione con altri linguaggi di scripting

Questo è spiegato in dettaglio in Scripting multi-linguaggio.

Parola chiave await

Qualcosa di simile alla parola chiave await di GDScript si può ottenere con la parola chiave await di C#.

La parola chiave await in C# si può utilizzare con qualsiasi espressione awaitable. È comunemente usata con operandi di tipo Task, Task<TResult>, ValueTask o ValueTask<TResult>.

Un'espressione t è awaitable se vale una delle seguenti condizioni:

  • t ha un tipo determinato in fase di compilazione dynamic.

  • t ha un metodo di istanza o estensione accessibile denominato GetAwaiter privo di parametri e di parametri di tipo, e un tipo di ritorno A per il quale valgono tutte le seguenti condizioni:

    • A implementa l'interfaccia System.Runtime.CompilerServices.INotifyCompletion.

    • A dispone di una proprietà dell'istanza accessibile e leggibile IsCompleted di tipo bool.

    • A dispone di un metodo di istanza accessibile GetResult senza parametri e senza parametri di tipo.

Un equivalente di attendere un segnale in GDScript si può ottenere con la parola chiave await e GodotObject.ToSignal.

Esempio:

public async Task SomeFunction()
{
    await ToSignal(timer, Timer.SignalName.Timeout);
    GD.Print("After timeout");
}