Unity UWP용 IL2CPP 스크립팅 백엔드
소개
이 문서는 Unity에서 UWP(유니버설 Windows 플랫폼) 애플리케이션을 개발할 때 IL2CPP 스크립팅 백엔드를 사용하는 방법에 대해 설명합니다. IL2CPP는 C# 코드를 네이티브 C++ 코드로 변환하여 높은 성능을 제공합니다.
IL2CPP 클래스 및 메서드
IL2CPP는 C# 클래스와 메서드를 C++ 형식으로 변경합니다. 다음은 IL2CPP 클래스 및 메서드의 구조입니다.
IL2CPP 클래스
IL2CPP 클래스는 <ClassName>_t#number
형식을 따릅니다. 여기서 <ClassName>
은 클래스의 이름이고, #number
는 선택적 고유 타입 번호입니다.
IL2CPP 클래스 예시 |
---|
String_t |
Object_t |
Type_t |
StringBuilder_t26 |
IL2CPP 메서드
IL2CPP 메서드는 <ClassName>_<MethodName>_m#number
형식을 따릅니다.
IL2CPP 메서드 예시 |
---|
ConfigurationSection_DoDeserializeSection_m1275 |
String_Format_m4102 |
Mathf_Sqrt_m289 |
IL2CPP 정적 필드 구조
정적 필드 구조는 <ClassName>_t#number_StaticFields
형식을 따릅니다.
정적 필드 예시 |
---|
StringBuilder_t26_StaticFields |
Thing_t24_StaticFields |
C++ 코드 디버깅
Visual Studio를 사용하여 생성된 C++ 코드를 디버깅할 수 있습니다. 다음과 같은 기능을 제공합니다:
- 변수 값 관측: 중단점을 설정하고 Watch 창을 사용해 변수 값을 관측합니다.
- 정적 필드 관측: IL2CPP에서 Unity는 정적 필드를 Il2CppClass 인스턴스에 저장합니다. 관련 포인터를 찾아 static_fields 필드의 값을 검색합니다.
- 예외 분석: C# 예외를 분석하려면 Watch 창에서 예외 오브젝트를 검사하고, C++ 예외에 대한 디버거가 중단되도록 설정합니다.
활용 예제
C# 코드에서 IL2CPP 클래스 호출
public class ExampleClass {
void ExampleMethod() {
// String 클래스 사용
string message = "Hello, Unity!";
Debug.Log(message);
}
}
C++에서 정적 필드 사용
정적 필드를 사용하여 게임의 성능을 개선하는 예입니다:
public class GameManager {
public static int Scores = 0;
public static void AddScore(int points) {
Scores += points;
}
}
추가 리소스
이 문서는 Unity의 IL2CPP 기능을 더 깊이 이해하고 활용하는 데 도움이 될 것입니다.