C#으로 spine-godot 설정하기
October 2nd, 2023
이 블로그 게시물에서는 spine-godot을 통해 C#을 사용하는 단계와 GDScript를 사용하는 것과 어떻게 다른지 간략하게 설명합니다.
설치
spine-godot 런타임 설명서에서 사전 구축된 Godot 4.1 편집기를 다운로드하고 C#을 지원하는 템플릿 바이너리를 내보낼 수 있습니다. 기본 설치 지침은 해당 설명서를 참조하세요.
C# 프로젝트 설정
C#을 지원하는 Godot 편집기 바이너리를 사용하려면 새 Godot 프로젝트를 설정할 때 다음의 추가 단계를 수행해야 합니다.
1. Godot 프로젝트 만들기
먼저, C#을 지원하는 다운로드된 Godot 편집기 바이너리를 사용하여 새 Godot 프로젝트를 만듭니다.
.NET 런타임 로드 실패
Godot 편집기가 .NET 런타임을 로드하지 못하면 시작 시 다음과 같은 오류 메시지가 표시됩니다.
메시지에 설명된 대로 Microsoft 공식 다운로드 사이트에서 .NET SDK 6.0 이상을 설치한 후 Godot을 다시 시작하세요.
2. godot-nuget 폴더 만들기
Godot을 닫고 프로젝트 폴더를 엽니다. 루트 디렉터리에 godot-nuget
이라는 새 폴더를 만듭니다.
3. C# 어셈블리 복사
Godot C# 어셈블리를 godot-nuget
폴더에 복사합니다. Windows 또는 Linux를 사용하는 경우 다운로드한 Godot 편집기 ZIP 파일에서 어셈블리를 찾을 수 있습니다.
- Windows:
godot-editor-windows-mono.zip\GodotSharp\Tools\
- Linux:
godot-editor-linux-mono.zip/GodotSharp/Tools/
macOS를 사용하는 경우:
- macOS: Finder에서
Godot.app
파일을 마우스 오른쪽 버튼으로 클릭하여Godot.app/Contents/Resources/GodotSharp/Tools/
로 이동한 후Show Package Contents
를 선택한 다음Contents/Resources/GodotSharp/Tools/
로 이동합니다.
다음 파일을 godot-nuget
폴더에 복사합니다.
GodotSharpEditor.<version>.snupkg
Godot.NET.Sdk.<version>.nupkg
Godot.SourceGenerators.<version>.nupkg
GodotSharp.<version>.nupkg
GodotSharp.<version>.snupkg
GodotSharpEditor.<version>.nupkg
<version>
부분은 다운로드한 Godot의 버전에 따라 다릅니다. 예:4.1.1
.
4. nuget.config 파일 만들기
마지막으로 프로젝트의 루트 디렉터리에 다음 내용으로 'nuget.config'라는 새 파일을 만듭니다.
<packageSources>
<!-- package source is additive -->
<add key="godot-nuget" value="./godot-nuget" />
</packageSources>
</configuration>
이렇게 하면 godot-nuget
디렉터리가 NuGet 패키지의 패키지 소스가 되도록 구성됩니다. NuGet 패키지 레지스트리에서 공식 Godot C# 어셈블리를 가져오는 대신 godot-nuget
디렉터리의 어셈블리가 사용되며 여기에는 spine-godot 런타임에 대한 C# 바인딩도 포함됩니다.
이제 Godot에서 프로젝트를 열고 GDScript 대신 Godot 및 spine-godot C# API를 사용할 수 있습니다!
C#으로 스켈레톤 애니메이팅
다음은 SpineSprite 노드에 연결된 C# 스크립트를 사용하여 Spine 스켈레톤을 애니메이팅하는 간단한 예제 코드입니다.
C#:
using System;
public partial class SpineSprite : SpineSprite {
public override void _Ready () {
GetAnimationState().SetAnimation("run", true, 0);
}
}
GDScript로 작성된 동일한 코드와 비교하면 API가 PascalCase를 사용하고 C# 코드 규칙에 따라 끝에 세미콜론이 필요하다는 점을 제외하면 거의 차이가 없습니다.
GDScript:
func _ready():
get_animation_state().set_animation("run", true, 0)
GDScript에서는 @onready
주석을 사용하여 함수 밖에서 스켈레톤을 가져올 수 있습니다. C#에서는 클래스 정의에서 API를 호출할 수 없으므로 함수 내에서 API를 가져와야 합니다. 다음은 스켈레톤 및 큐 애니메이션을 뒤집는 C#과 GDScript 코드를 비교한 것입니다.
C#:
using System;
public partial class SpineSprite : SpineSprite {
private SpineSkeleton spineSkeleton;
private SpineAnimationState spineSpriteAnimState;
public override void _Ready () {
spineSkeleton = GetSkeleton();
spineSpriteAnimState = GetAnimationState();
spineSkeleton.SetScaleX(-1);
spineSpriteAnimState.SetAnimation("idle", true, 0);
spineSpriteAnimState.AddAnimation("run", 2, true, 0);
}
}
GDScript:
@onready var spineSkeleton : SpineSkeleton = get_skeleton()
@onready var spineSpriteAnimState : SpineAnimationState = get_animation_state()
func _ready():
spineSkeleton.set_scale_x(-1)
spineSpriteAnimState.set_animation("idle", true, 0)
spineSpriteAnimState.add_animation("run", 2, true, 0)
API가 GDScript에서 C#으로 매핑되는 방법에 대한 자세한 내용은 Godot C# 설명서를 참조하세요.
C# 예제
spine-godot의 C# 예제를 살펴보고 실험해 보려면:
- spine-runtimes Git 저장소를 복제하거나 최신 버전을 ZIP으로 다운로드한 후 압축을 풉니다.
spine-runtimes/spine-godot/example-v4-csharp/
폴더를 연 후project.godot
파일을 클릭하여 엽니다.
FileSystem 독(dock)의 examples
폴더에서 C#을 사용하는 다양한 예제 장면과 스크립트를 찾을 수 있습니다.
C#을 지원하는 spine-godot을 사용하는 데 문제가 있는 경우, 주저하지 마시고 Spine 포럼에 질문을 올려주세요!