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의 통합을 통해 멋진 앱을 개발하시길 바랍니다.