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...
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# |
|---|---|
|
|
|
|
수학 함수
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와 var2str와 같은 기타 다른 전역 함수는 GD에 위치합니다. 예: GD.Print와 GD.Var2Str.
예외:
GDScript |
C# |
|---|---|
|
|
|
|
|
|
|
|
팁
때로는 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 |
|
Mathf.IsInf 또는 float.IsInfinity 또는 double.IsInfinity |
|
|
|
|
|
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 |
문자열 |
변종 |
타입 |
|
var_to_bytes |
GD.VarToBytes |
var_to_bytes_with_objects |
GD.VarToBytesWithObjects |
var_to_str |
GD.VarToStr |
트윅 |
|
감싸다 |
Mathf.Wrap |
포장 |
Mathf.Wrap |
랩피 |
Mathf.Wrap |
C#의 GDScript 유틸리티 함수 및 이에 상응하는 함수 목록:
GDScript |
C# |
|---|---|
assert |
|
문자 |
명시적 변환 사용: |
개종하다 |
GD.Convert |
|
NAN |
get_stack |
|
|
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] 어트리뷰트를 사용하세요. 이 어트리뷰트는 필요에 따라 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_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 |
|
바이그램 |
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 |
|
양 |
StringExtensions.Count(RegEx 사용을 고려하세요) |
양 |
StringExtensions.CountN(RegEx 사용을 고려하세요) |
움푹 들어간 곳 |
StringExtensions.Dedent |
ends_with |
|
카메라 |
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 |
|
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 사용을 고려하세요) |
줄 길이 |
줄 길이 |
노트북 |
|
문자열 |
|
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 |
|
num_int64 |
|
num_scientific |
|
num_uint64 |
|
pad_decimals |
StringExtensions.PadDecimals |
pad_zeros |
StringExtensions.PadZeros |
path_join |
StringExtensions.PathJoin |
반복 |
string constructor 또는 `StringBuilder`_를 사용하세요. |
바꾸기 |
|
바꾸기 |
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 |
|
분할 |
NAN |
문자열 |
|
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 |
|
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 |
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# |
|---|---|
|
|
시그널
다음 메서드들은 관련된 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
|
|
Signal 유형은 대기 가능 패턴을 구현합니다. 즉, await 키워드와 함께 사용할 수 있습니다. :ref:`doc_c_sharp_differences_await`를 참조하세요.
Signal 유형을 사용하는 대신 C#에서 Godot 시그널를 사용하는 권장 방법은 생성된 C# 이벤트를 사용하는 것입니다. :ref:`doc_c_sharp_signals`를 참조하세요.
Call(호출)
다음 메서드들은 관련된 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
대상 |
메서드 |
메서드 |
현재 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# |
|---|---|
|
|
|
|
기저
C#에서 Struct은 매개변수 없는 생성자를 가질 수 없습니다. 따라서 new Basis()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Basis()에 해당하는 것으로 Basis.Identity를 사용합니다.
다음 메서드들는 다른 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
Transform2D
C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Transform2D()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Transform2D()에 해당하는 것으로 Transform2D.Identity를 사용해주세요.
다음 메서드들은 관련된 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
|
|
|
|
Transform2D
C#에서 Struct는 매개변수 없는 생성자를 가질 수 없습니다. 따라서, new Transform2D()는 모든 프리미티브 멤버를 디폴트 값으로 초기화합니다. GDScript와 C++에서 Transform2D()에 해당하는 것으로 Transform2D.Identity를 사용해주세요.
다음 메서드들은 관련된 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
|
|
Rect2
다음 영역은 약간 다른 이름으로 변경된 속성입니다:
GDScript |
C# |
|---|---|
|
|
다음 메서드들는 다른 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
Rect2
이 유형은 .NET 명명 규칙을 따르기 위해 C#에서 ``Rect2I``로 명명됩니다.
다음 영역은 약간 다른 이름으로 변경된 속성입니다:
GDScript |
C# |
|---|---|
|
|
다음 메서드들는 다른 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
AABB
이 프로젝트에서, 우리는 Godot의 명명 규칙을 따를 것입니다.
다음 메서드들는 다른 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
쿼터니언
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# |
|---|---|
|
|
다음 메서드들는 다른 이름으로 변경된 속성들입니다:
GDScript |
C# |
|---|---|
|
|
다음 메소드를 생성자로 사용할 수 있습니다.
GDScript |
C# |
|---|---|
|
|
|
|
배열
패킹된 배열에 해당하는 것은 ``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) 생성자를 사용해 만들 수 있습니다.
변종
``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> 유형의 피연산자와 함께 사용됩니다.
응답 이벤트는 다음 필드가 있는 딕셔너리일 것입니다:
async/await와 Godot.Object.ToSignal로 시그널에서 yield와 동일한 효과를 얻을 수 있습니다.
예시:
public async Task SomeFunction()
{
await ToSignal(timer, Timer.SignalName.Timeout);
GD.Print("After timeout");
}