Unity AppCallbacks 클래스 가이드
이 문서는 Unity 엔진에서 UWP (Universal Windows Platform) 애플리케이션을 개발할 때 사용하는 AppCallbacks
클래스에 대한 공식 가이드입니다. 이를 통해 Unity와 애플리케이션 간의 통신을 간편하게 할 수 있습니다.
1. AppCallbacks 클래스 소개
AppCallbacks
클래스는 Unity 엔진을 메인 애플리케이션과 연결해주는 역할을 합니다. 아래 예시는 AppCallbacks
클래스를 사용하여 애플리케이션을 초기화하는 방법을 보여줍니다.
예시:
App::App()
{
InitializeComponent();
SetupOrientation();
m_AppCallbacks = ref new AppCallbacks();
}
주요 메서드 및 기능
메서드 | 설명 |
---|---|
InitializeD3DXAML() |
DirectX 11 기기를 초기화하고 첫 번째 레벨을 로드합니다. |
SetCoreWindowEvents(CoreWindow^ window) |
Unity의 코어 창을 설정하며, 여러 시스템 이벤트를 구독합니다. |
SetSwapChainPanel(SwapChainPanel^ panel) |
DirectX 11의 렌더 타겟으로 사용되는 XAML 컨트롤을 Unity에 전달합니다. |
IsInitialized() |
엔진이 메인 게임 루프를 실행할 준비가 되었는지 확인합니다. |
InvokeOnUIThread(AppCallbackItem item, bool waitUntilDone) |
UI 스레드에서 델리게이트를 호출합니다. |
2. 앱 스레드 생성
Unity는 UI 스레드를 막기 위해 별도의 App Thread
를 생성합니다. 이는 애플리케이션이 장시간 응답하지 않을 경우 MS의 테스트 기준을 준수하기 위함입니다.
m_AppCallbacks = ref new AppCallbacks();
위 코드를 사용하여 AppCallbacks
클래스를 생성하면 Unity는 새로운 스레드를 자동으로 만들게 됩니다.
3. 커맨드 라인 인자 처리
AppCallbacks
는 커스텀 커맨드 라인 인자를 문자열 배열로 생성자에 전달받을 수 있습니다. 이를 통해 애플리케이션 실행 시 필요한 추가 정보를 전달할 수 있습니다. 자세한 내용은 UWP 커맨드 라인 인자 관련 문서를 참조하세요.
4. 활용 예제
4.1 Unity 초기화 및 렌더링 시작
void App::OnLaunched(LaunchActivatedEventArgs^ e)
{
InitializeUnity(e->Arguments);
}
위의 코드는 애플리케이션이 시작될 때 Unity를 초기화하는 예제입니다.
4.2 스플래시 화면 제거
appCallbacks->RenderingStarted += ref new RenderingStartedHandler(this, &MainPage::RemoveSplashScreen);
Unity의 첫 번째 프레임이 렌더링된 후 스플래시 화면을 제거하는 이벤트를 설정하는 방법입니다.
5. 참고자료 및 추가 리소스
- UI 스레드 응답성 유지에 대한 Microsoft의 문서
- UWP 커맨드 라인 인자 관련 문서
- UWP용 C# 스크립트의 WinRT API 관련 공식 문서
이 문서가 Unity 애플리케이션 개발에 도움이 되기를 바랍니다. Unity와 UWP의 통합을 통해 멋진 앱을 개발하시길 바랍니다.