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.

C# API와 GDScript의 차이점

이것은 C#과 GDScript간의 (불완전한) API 차이점 목록입니다.

일반적인 차이점

GDScript/C++에서는 snake_case를 쓰지만 C# API는 PascalCase를 씁니다. 가능하면 공백과 getters/setters이 속성으로 변환됩니다. 일반적으로 C# Godot API는 합리적으로 가능한 것처럼 관용적이도록 노력합니다.

GDScript에서는 속성의 setter/getter를 직접 호출할 수 있지만 권장되지는 않습니다. C#에서는 속성만 정의됩니다. 예를 들어 GDScript 코드 ``x.set_name("Friend")``를 C#으로 변환하려면 ``x.Name = "Friend";``를 작성합니다.

C# IDE는 이름이 바뀐 C# API를 알아낼 때 매우 유용한 intellisense를 제공합니다. 내장된 Godot 스크립트 편집기는 C# intellisense를 지원하지 않으며 필수로 간주되는 다른 많은 C# 개발 도구도 제공하지 않습니다. :ref:`doc_c_sharp_setup_external_editor`를 참조하세요.

전역 범위

C#은 네임 스페이스에서 전역 함수와 일부 상수는 선언하지 않기 때문에 이 둘은 클래스로 이동해야 합니다. 대부분의 전역 상수는 자신의 열거형으로 이동합니다.

상수

C#에서는 기본 형식만 상수일 수 있습니다. 예를 들어, TAU 상수는 Mathf.Tau 상수로 대체되지만, Vector2.RIGHT 상수는 Vector2.Right 읽기 전용 속성으로 대체됩니다. 이는 상수와 유사하게 동작하지만 switch 문과 같은 일부 컨텍스트에서는 사용할 수 없습니다.

전역 상수는 자신의 열거형으로 이동합니다. 예를 들어 ERR_* 상수는 Error 열거형으로 이동합니다.

특별한 경우:

GDScript

C#

TYPE_*

Variant.Type 열거형

OP_*

Variant.Operator 열거형

수학 함수

abs, acos, asin, atan 그리고 atan2와 같은 수학 전역 함수는 Mathf에 위치하며, Abs, Acos, Asin, Atan 그리고 Atan2로 존재합니다. PI 상수는 Mathf.Pi입니다.

C#은 또한 다른 유용한 수학 연산을 포함할 수 있는 정적 System.MathSystem.MathF 클래스를 제공합니다.

랜덤 함수

rand_rangerand_seed와 같은 랜덤 전역 함수는 GD에 위치합니다. 예: GD.RandRangeGD.RandSeed.

System.Random 사용을 고려하거나, 암호화된 강력한 무작위성이 필요한 경우 `System.Security.Cryptography.RandomNumberGenerator`_를 사용해 보세요.

기타 함수

printvar2str와 같은 기타 다른 전역 함수는 GD에 위치합니다. 예: GD.PrintGD.Var2Str.

예외:

GDScript

C#

weakref(obj)

Object.WeakRef(obj)

is_instance_valid(obj)

Object.IsInstanceValid(obj)

is_instance_valid(obj)

Object.IsInstanceValid(obj)

is_instance_valid(obj)

Object.IsInstanceValid(obj)

때로는 using static 지시문을 사용하는 게 유용할 수 있습니다. 이 지시문이면 클래스 이름을 지정하지 않고도 클래스의 멤버와 중첩된 타입에 접근할 수 있습니다.

예시:

using static Godot.GD;

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

모든 지시문

Godot의 전역 범위 함수 목록과 C#에서 이에 상응하는 함수:

GDScript

C#

as

수학

절대

수학

압시

수학

아코스

수학 함수

어코쉬

수학 함수

일반적인 차이점

Mathf.AngleDifference

asin

Mathf.Asin

아신

수학

아탄

Mathf.Atan

atan2

Mathf.Atan2

아탄

수학

bezier_derivative

Mathf.BezierDerivative

보간법 (Interpolation)

보간법 (Interpolation)

bytes_to_var

GD.BytesToVar

bytes_to_var_with_objects

GD.BytesToVarWithObjects

천장

Mathf.Ceil

천장

Mathf.Ceil

셀리

Mathf.CeilToInt

클램프

Mathf.Clamp

클램프

Mathf.Clamp

댐핑

Mathf.Clamp

const

수학

코시

Mathf.Cosh

보간법 (Interpolation)

물리 보간

보간법 (Interpolation)

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

용이성

Mathf.Ease

문자열

String

export

수학

바닥

바닥

바닥

바닥

바닥

Mathf.FloorToInt

fmod

연산자

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_valid(obj)

Object.IsInstanceValid(obj)

is_instance_valid(obj)

Object.IsInstanceValid(obj)

is_nan

Mathf.IsNaN 또는 float.IsNaN 또는 double.IsNaN

is_same

연산자 == 또는 object.ReferenceEquals

is_zero_approx

Mathf.IsZeroApprox

러프

Mathf.Lerp

lerp_angle

Mathf.LerpAngle

lerpf

Mathf.Lerp

linear_to_db

Mathf.LinearToDb

log

수학

최대

수학

최대

수학

맥시

수학

믹스

수학

최소

수학

미니

수학

move_toward

Mathf.MoveToward

nearest_po2

Mathf.NearestPo2

탁구

Mathf.PingPong

포스모드

Mathf.PosMod

수학

인쇄

GD.Print

print_rich

GD.PrintRich

print_verbose

OS.IsStdoutVerbose 및 GD.Print 사용

프린터

GD.PrintErr

인쇄용

GD.PrintRaw

가져오기 힌트

GD.PrintS

인쇄하다

GD.PrintT

push_error

GD.PushError

push_warning

GD.PushWarning

rad_to_deg

Mathf.RadToDeg

rand_from_seed

GD.RandFromSeed

랜드프

GD.Randf

randf_range

GD.RandRange

randfn

GD.Randfn

랜디

GD.Randi

randi_range

GD.RandRange

랜덤성(Randomness)

랜덤성(Randomness)

톤맵

Mathf.Remap

rid_allocate_id

NAN

rid_from_int64

NAN

rotate_toward

바닥

배경(Background)

Mathf.Round

배경(Background)

Mathf.Round

배경(Background)

수학 함수

종자

GD.Seed

signal

Mathf.Sign

signal

Mathf.Sign

signal

Mathf.Sign

문자열

수학

Mathf.Sinh

부드러운 단계

Mathf.SmoothStep

부러진

Mathf.Snapped

스냅프

Mathf.Snapped

스냅페디

Mathf.Snapped

sqrt

Mathf.Sqrt

step_decimals

Mathf.StepDecimals

문자열

벡터 보간

str_to_var

GD.StrToVar

그리고

수학

Mathf.Tanh

type_convert

Variant.As<T> 또는 GD.Convert

문자열

변종

타입

Variant.Type 열거형

var_to_bytes

GD.VarToBytes

var_to_bytes_with_objects

GD.VarToBytesWithObjects

var_to_str

GD.VarToStr

트윅

Object.WeakRef(obj)

감싸다

Mathf.Wrap

포장

Mathf.Wrap

랩피

Mathf.Wrap

C#의 GDScript 유틸리티 함수 및 이에 상응하는 함수 목록:

GDScript

C#

assert

System.Diagnostics.Debug.Assert

문자

명시적 변환 사용: (char)65

개종하다

GD.Convert

dict2inst

NAN

get_stack

System.Environment.StackTrace

inst2dict

NAN

en

NAN

load

GD.Load

preload

NAN

print_debug

NAN

print_stack

GD.프린트(System.Environment.StackTrace)

range

GD.Range 또는 System.Linq.Enumerable.Range

type_exists

ClassDB.ClassExists(유형)

GDScript에서 쓰이는 preload는 C#에서 사용할 수 없습니다. 대신 GD.Load 또는 ResourceLoader.Load를 사용합니다.

내보내기 설정

GDScript의 export 키워드 대신 [Export] 어트리뷰트를 사용하세요. 이 어트리뷰트는 필요에 따라 PropertyHinthintString 매개변수를 포함할 수도 있으며, 값을 전달해 기본값을 설정할 수 있습니다.

예시:

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

Signal 키워드

GDScript의 signal 키워드 대신 [Signal] 특성을 사용하여 시그널을 선언합니다. 이 특성은 delegate에 사용되어야 하며, 이름은 시그널을 정의하는 데 사용됩니다.

[Signal]
delegate void MySignalEventHandler(string willSendAString);

다음 또한 확인하세요: c_sharp_signals.

@onready 주석

GDScript에서는 아래와 같이 ready 함수가 onready (다음을 참조하세요 doc_gdscript_onready_keyword)로 호출될 때까지 멤버 변수의 초기화를 연기할 수 있습니다:

@onready var my_label = get_node("MyLabel")

반면 C#에는 이런 기능이 존재하지 않습니다. 같은 효과를 위해서는 아래와 같이 작성해야 합니다.

private Label _myLabel;

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

싱글톤

싱글톤은 싱글톤 패턴을 사용하는 대신 정적 클래스로 사용 가능합니다. 이것으로 Instance 속성으로 작업하는 것과 비슷하면서도 더 적은 문장의 코드를 만들 수 있습니다.

예시:

Input.IsActionPressed("ui_down")

하지만, 일부 드문 경우가 있어 충분하지 않습니다. 예를 들어 Connect처럼 기본 클래스 Godot.Object의 멤버로 접근해야하는 경우가 있습니다. 이런 경우를 위해, 싱글톤 인스턴스를 반환하는 Singleton 정적 속성을 제공합니다. 인스턴스의 타입은 Godot.Object입니다.

예시:

Input.Singleton.JoyConnectionChanged += Input_JoyConnectionChanged;

메인 화면 플러그인을 개발하는 경우 GDScript와 달리 C#에서는 ``EditorInterface``가 정적 클래스가 아니라는 점에 유의해야 합니다. 따라서 ``EditorInterface``의 인스턴스를 얻으려면 싱글톤 패턴을 사용해야 합니다.

GDScript

C#

Godot 인터페이스

Godot 인터페이스

String

System.String (string)을 사용합니다. 모든 Godot 문자열 메서드는 StringExtensions 클래스에서 확장 메서드 형태로 제공됩니다.

C# 문자열은 UTF-16 인코딩을 사용하는 반면 Godot 문자열은 UTF-32 인코딩을 사용합니다.

예시:

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

.NET에서는 문자열을 변경할 수 없으므로 문자열을 조작하는 모든 메서드는 원래 문자열을 수정하지 않고 수정 사항이 적용된 새로 생성된 문자열을 반환합니다. 여러 문자열 할당을 생성하지 않으려면 StringBuilder 사용을 고려하세요.

Godot의 문자열 메소드 목록과 C#에서 이에 상응하는 메소드:

GDScript

C#

begins_with

string.StartsWith

바이그램

StringExtensions.Bigrams

bin_to_int

StringExtensions.BinToInt

c_escape

StringExtensions.CEscape

c_unescape

StringExtensions.CUnescape

대문자로 시작

StringExtensions.Capitalize

casecmp_to

StringExtensions.CasecmpTo 또는 StringExtensions.CompareTo(string.Equals 또는 string.Compare 사용을 고려하세요)

문자

NAN

continue

string.Contains

StringExtensions.Count(RegEx 사용을 고려하세요)

StringExtensions.CountN(RegEx 사용을 고려하세요)

움푹 들어간 곳

StringExtensions.Dedent

ends_with

string.EndsWith

카메라

string.Remove`_(문자열을 조작하려면 `StringBuilder 사용을 고려하세요)

찾기

StringExtensions.Find(string.IndexOf 또는 string.IndexOfAny 사용을 고려하세요)

찾아내다

StringExtensions.FindN(string.IndexOf 또는 string.IndexOfAny 사용을 고려하세요)

형식

벡터 보간

get_base_dir

StringExtensions.GetBaseDir

get_basename

StringExtensions.GetBaseName

extends

StringExtensions.GetExtension

get_file

StringExtensions.GetFile

get_slice

NAN

get_slice_count

NAN

get_slicec

NAN

hash

StringExtensions.Hash(GDScript에서와 동일한 동작을 보장해야 하는 경우가 아니면 object.GetHashCode 사용을 고려하세요)

hex_decode

StringExtensions.HexDecode(System.Convert.FromHexString 사용을 고려하세요)

hex_to_int

StringExtensions.HexToInt(int.Parse 또는 `long.Parse`_를 `System.Globalization.NumberStyles.HexNumber`_와 함께 사용하는 것을 고려)

humanize_size

NAN

인덱스

StringExtensions.Indent

assert

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

가입하다

문자열

json_escape

StringExtensions.JSONEscape

왼쪽

StringExtensions.Left(string.Substring 또는 string.AsSpan 사용을 고려하세요)

줄 길이

줄 길이

노트북

string.PadLeft

문자열

string.TrimStart

match

StringExtensions.Match(RegEx 사용을 고려하세요)

match

StringExtensions.MatchN(RegEx 사용을 고려하세요)

md5_buffer

StringExtensions.Md5Buffer(System.Security.Cryptography.MD5.HashData 사용을 고려하세요)

md5_text

StringExtensions.Md5Text(StringExtensions.HexEncode와 함께 System.Security.Cryptography.MD5.HashData 사용을 고려하세요)

naturalnocasecmp_to

해당 없음(string.Equals 또는 string.Compare 사용을 고려)

nocasecmp_to

StringExtensions.NocasecmpTo 또는 StringExtensions.CompareTo(string.Equals 또는 string.Compare 사용을 고려하세요)

enum

float.ToString 또는 double.ToString

num_int64

int.ToString 또는 long.ToString

num_scientific

float.ToString 또는 double.ToString

num_uint64

uint.ToString 또는 ulong.ToString

pad_decimals

StringExtensions.PadDecimals

pad_zeros

StringExtensions.PadZeros

path_join

StringExtensions.PathJoin

반복

string constructor 또는 `StringBuilder`_를 사용하세요.

바꾸기

string.Replace 또는 RegEx

바꾸기

StringExtensions.ReplaceN(string.Replace 또는 RegEx 사용을 고려하세요)

Server

NAN

찾기

StringExtensions.RFind(string.LastIndexOf 또는 string.LastIndexOfAny 사용을 고려하세요)

찾기

StringExtensions.RFindN(string.LastIndexOf 또는 string.LastIndexOfAny 사용을 고려하세요)

StringExtensions.Right(string.Substring 또는 string.AsSpan 사용을 고려하세요)

rpad

string.PadRight

분할

NAN

문자열

string.TrimEnd

sha1_buffer

StringExtensions.Sha1Buffer(System.Security.Cryptography.SHA1.HashData 사용을 고려하세요)

sha1_text

StringExtensions.Sha1Text(StringExtensions.HexEncode와 함께 System.Security.Cryptography.SHA1.HashData 사용을 고려하세요)

sha256_buffer

StringExtensions.Sha256Buffer(System.Security.Cryptography.SHA256.HashData 사용을 고려하세요)

sha256_text

StringExtensions.Sha256Text(StringExtensions.HexEncode와 함께 System.Security.Cryptography.SHA256.HashData 사용을 고려하세요)

유사성

StringExtensions.Similarity

simplify_path

StringExtensions.SimplifyPath

분할

StringExtensions.Split(string.Split 사용을 고려하세요)

split_floats

StringExtensions.SplitFloat

strip_edges

StringExtensions.StripEdges(string.Trim, string.TrimStart 또는 string.TrimEnd 사용을 고려하세요)

strip_escapes

StringExtensions.StripEscapes

하위 문자열

StringExtensions.Substr(string.Substring 또는 string.AsSpan 사용을 고려하세요)

to_ascii_buffer

StringExtensions.ToAsciiBuffer(System.Text.Encoding.ASCII.GetBytes 사용을 고려하세요)

to_camel_case

StringExtensions.ToCamelCase

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

Windows의 StringExtensions.ToUtf16Buffer 및 기타 플랫폼의 StringExtensions.ToUtf32Buffer

trim_prefix

StringExtensions.TrimPrefix

trim_suffix

StringExtensions.TrimSuffix

unicode_at

string[int] 인덱서

uri_decode

StringExtensions.URIDecode(System.Uri.UnescapeDataString 사용을 고려하세요)

RigidBody2D 사용하기

StringExtensions.URIEncode(System.Uri.EscapeDataString 사용을 고려하세요)

validate_node_name

StringExtensions.ValidateNodeName

xml_escape

StringExtensions.XMLEscape

xml_unescape

StringExtensions.XMLUnescape

문자열과 해당 C#을 생성하는 Godot의 PackedByteArray 메소드 목록:

GDScript

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://``로 시작하는 경로)가 아닌 기본 OS 경로에서만 사용할 수 있습니다. :ref:`doc_data_paths`를 참조하세요.

노드 경로

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

center()

IsEmpty

시그널

다음 메서드들은 관련된 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

Name

get_area()

Center

Signal 유형은 대기 가능 패턴을 구현합니다. 즉, await 키워드와 함께 사용할 수 있습니다. :ref:`doc_c_sharp_differences_await`를 참조하세요.

Signal 유형을 사용하는 대신 C#에서 Godot 시그널를 사용하는 권장 방법은 생성된 C# 이벤트를 사용하는 것입니다. :ref:`doc_c_sharp_signals`를 참조하세요.

Call(호출)

다음 메서드들은 관련된 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

대상

메서드

메서드

현재 C#은 다음 중 하나에 해당하는 경우 ``Callable``를 지원합니다.

  • Callable``는 C# ``Callable 유형을 사용하여 생성되었습니다.

  • Callable``는 엔진의 ``Callable``의 기본 버전입니다. 사용자 정의 ``Callable는 지원되지 않습니다. ``Callable``는 다음 중 하나가 충족될 때 사용자 정의됩니다.

    • Callable``에는 바인딩된 정보가 있습니다(``bind/unbind``로 생성된 ``Callables는 지원되지 않습니다).

    • ``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

이 프로젝트에서, 우리는 Godot의 명명 규칙을 따를 것입니다.

다음 메서드들은 관련된 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

Id

is_instance_valid(obj)

IsValid

기저

C#에서 Struct은 매개변수 없는 생성자를 가질 수 없습니다. 따라서 new Basis()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Basis()에 해당하는 것으로 Basis.Identity를 사용합니다.

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

get_scale()

Scale

Transform2D

C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Transform2D()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Transform2D()에 해당하는 것으로 Transform2D.Identity를 사용해주세요.

다음 메서드들은 관련된 이름으로 변경된 속성들입니다:

GDScript

C#

get_rotation()

Rotation

get_scale()

Scale

get_skew()

Skew

Transform2D

C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Transform2D()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Transform2D()에 해당하는 것으로 Transform2D.Identity를 사용해주세요.

다음 메서드들은 관련된 이름으로 변경된 속성들입니다:

GDScript

C#

get_rotation()

Rotation

get_scale()

Scale

Rect2

다음 영역은 약간 다른 이름으로 변경된 속성입니다:

GDScript

C#

end

End

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

Area

Rect2

이 유형은 .NET 명명 규칙을 따르기 위해 C#에서 ``Rect2I``로 명명됩니다.

다음 영역은 약간 다른 이름으로 변경된 속성입니다:

GDScript

C#

end

End

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

Area

AABB

이 프로젝트에서, 우리는 Godot의 명명 규칙을 따를 것입니다.

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

get_scale()

Volume

쿼터니언

C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Quat()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Quat()에 해당하는 것으로 Quat.Identity를 사용해주세요.

투영

C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Quat()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Quat()에 해당하는 것으로 Quat.Identity를 사용해주세요.

색상

C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Quat()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Quat()에 해당하는 것으로 Quat.Identity를 사용해주세요.

바이트에서 색상을 구성하는 전역 Color8 메서드는 Color 유형의 정적 메서드로 사용할 수 있습니다.

Color 상수는 Colors 정적 클래스에서 읽기 전용 속성으로 사용할 수 있습니다.

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

get_area()

inst2dict

다음 메서드들는 다른 이름으로 변경된 속성들입니다:

GDScript

C#

String[]

FromHtml(ReadOnlySpan<char>)

다음 메소드를 생성자로 사용할 수 있습니다.

GDScript

C#

hex(int)

Color8

hex64(int)

Color8

배열

패킹된 배열에 해당하는 것은 ``System.Array``입니다.

:ref:`C#의 PackedArray <doc_c_sharp_collections_packedarray>`도 참조하세요.

Godot.Collections.Array<T>Godot.Collections.Array 를 둘러싸는 type-safe wrapper 입니다. Godot.Collections.Array<T>(Godot.Collections.Array) 생성자를 사용해 만들 수 있습니다.

다음 또한 확인하세요: c_sharp_signals.

딕셔너리

Godot.Collections.Dictionary<T>Godot.Collections.Dictionary 를 둘러싸는 type-safe wrapper입니다. Godot.Collections.Dictionary<T>(Godot.Collections.Dictionary) 생성자를 사용해 만들 수 있습니다.

Dictionary

변종

``Godot.Variant``는 Godot의 기본 Variant 유형을 나타내는 데 사용됩니다. 모든 :ref:`Variant 호환 유형 <c_sharp_variant_ Compatible_types>`을 변환할 수 있습니다.

다음 또한 확인하세요: c_sharp_signals.

다른 스크립팅 언어와 소통하기

이것은 : ref :`doc_cross_language_scripting`에 광범위하게 설명되어 있습니다.

onready 키워드

단일 매개변수를 사용하는 GDScript의 yield와 비슷한 C#의 yield 키워드.

C#의 await 키워드는 대기 가능한 모든 표현식과 함께 사용할 수 있습니다. 일반적으로 Task, Task<TResult>, ValueTask 또는 ValueTask<TResult> 유형의 피연산자와 함께 사용됩니다.

응답 이벤트는 다음 필드가 있는 딕셔너리일 것입니다:

  • ``t``는 컴파일 타임 유형 ``dynamic``입니다.

  • ``t``에는 매개 변수와 유형 매개 변수가 없는 ``GetAwaiter``라는 액세스 가능한 인스턴스 또는 확장 메서드와 다음이 모두 포함된 반환 유형 ``A``가 있습니다.

    • A``는 ``System.Runtime.CompilerServices.INotifyCompletion 인터페이스를 구현합니다.

    • A``에는 ``bool 유형의 액세스 가능하고 읽기 가능한 인스턴스 속성 ``IsCompleted``가 있습니다.

    • ``A``에는 매개변수와 유형 매개변수가 없는 액세스 가능한 인스턴스 메소드 ``GetResult``가 있습니다.

async/await와 Godot.Object.ToSignal로 시그널에서 yield와 동일한 효과를 얻을 수 있습니다.

예시:

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