Version: 2017.1
유니버설 Windows 플랫폼(Universal Windows Platform): C# 스크립트의 WinRT API(WinRT API in C# scripts)
스크립팅 백엔드(Scripting Backend)

유니버설 Windows 플랫폼 플레이어 설정(Universal Windows Platform Player Settings)

이 페이지에서는 유니버설 Windows 플랫폼 관련 Player Settings 에 대해 자세하게 설명합니다. 일반적인 플레이어 설정에 대한 설명은 여기에서 확인할 수 있습니다.

대부분의 설정은 Visual Studio 솔루션을 처음 만들 때 Package.appxmanifest로 전송됩니다.

참고: 기존 프로젝트를 토대로 프로젝트를 빌드하면 Unity가 이미 있는 Package.appxmanifest 파일을 덮어쓰지 않습니다. 즉, Player Settings에서 무언가를 변경하는 경우 Package.appxmanifest를 확인해야 합니다. Package.appxmanifest를 다시 생성하려면 간단히 삭제하고 Unity에서 프로젝트를 다시 빌드해야 합니다.

앱 패키지 매니페스트에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/windows/apps/br211474.aspx에서 확인할 수 있습니다.

Packaging, Application UI, Tile, 스플래시 화면, Capabilities의 설정은 Package.appxmanifest 파일의 설정으로 직접 전송됩니다.

Player Settings의 Supported orientations도 매니페스트(Visual Studio 솔루션의 Package.appxmanifest 파일)에 입력됩니다. Unity는 유니버설 Windows 앱에서 방향을 매니페스트에서 지정한 설정에 관계없이 플레이어 설정에서 사용한 방향으로 초기화합니다. Windows 자체가 해당 설정을 데스크톱 및 태블릿 컴퓨터에서 무시하기 때문입니다. Unity 스크립팅 API를 사용하여 언제든지 지원되는 방향을 변경할 수 있습니다.

인증서

모든 유니버설 Windows 앱에는 개발자를 식별하는 인증서가 필요합니다. 인증서를 제공하지 않는 경우 Unity가 디폴트 인증서를 만듭니다.

컴파일

알다시피 Unity에서는 스크립트 파일을 컴파일할 때 Mono를 사용하고, 사용자는 .NET 3.5에 있는 API를 사용할 수 있습니다. 컴파일 오버라이드를 통해 C# 파일에서 유니버설 Windows 플랫폼(.NET Core라고도 함)에 .NET을 사용할 수 있습니다. API는 여기서 제공됩니다.

컴파일 오버라이드가 다음과 같이 설정된 경우:

  • None - C# 파일이 Mono 컴파일러를 사용하여 컴파일됩니다.
  • Use .Net Core - Microsoft 컴파일러와 .NET Core를 사용하여 C# 파일이 컴파일됩니다. Windows 런타임 API를 사용할 수 있지만 C# 파일에서 구현된 클래스에는 JS 언어에서 액세스할 수 없습니다. Windows 런타임에서 API를 사용하는 경우 유니버설 Windows 플랫폼에 빌드할 때만 API를 사용할 수 있고 Unity 에디터에서는 사용할 수 없기 때문에 코드를 ENABLE_WINMD_SUPPORT 정의로 래핑하는 것이 좋습니다.
  • Use .Net Core Partially - Plugins, Standard Assets, Pro Standard Assets 폴더에 있지 않은 C# 파일은 Microsoft 컴파일러와 .NET Core를 사용하여 컴파일됩니다. 기타 모든 C# 파일은 Mono 컴파일러를 사용하여 컴파일됩니다. C#으로 구현된 클래스는 JS 언어에서 액세스할 수 있다는 장점이 있습니다. 참고: .NET Core API를 Unity 에디터에서 테스트할 수 없습니다. Unity 에디터는 .NET Core에 액세스할 수 없기 때문입니다. 따라서 유니버설 Windows 앱을 실행할 때만 API를 테스트할 수 있습니다.

참고: .NET Core API를 JS 스크립트에서 사용할 수 없습니다.

다음은 .NET Core API를 스크립트에서 사용하는 방법의 간단한 예입니다.

string GetTemporaryFolder()
{
#if ENABLE_WINMD_SUPPORT
    return Windows.Storage.ApplicationData.Current.TemporaryFolder.Path;
#else
    return "LocalFolder";
#endif
}

기타(Misc)

처리되지 않은 플러그인에는 Unity의 전처리 툴(SerializationWeaver, AssemblyPreprocessor, rrw 등)에서 무시되는 플러그인의 리스트가 있습니다. Unity가 플러그인을 전처리하는 데 실패했다는 오류가 표시되지 않는 한, 일반적으로 리스트를 수정하지 않아도 됩니다.

리스트에 플러그인을 추가하면 어떻게 될까요?

Unity는 직렬화 용도로 사용되는 어셈블리에 추가 IL 코드를 삽입하지 않지만, 플러그인이 UnityEngine.dll을 레퍼런스하지 않아도 Unity가 사용자 플러그인의 데이터를 직렬화하지 않기 때문에 괜찮습니다.

독립 입력 소스(Input Source)

독립 입력 소스 옵션을 활성화할 수 있습니다. 자세한 내용은 여기서 확인할 수 있습니다. 기본적으로 입력의 응답성을 높이므로, 일반적인 경우 이 옵션을 활성화하는 것이 좋습니다.

낮은 지연율 프레젠테이션 API(Low Latency Presentation API) 낮은 지연율 프레젠테이션 API를 사용할 수 있게 하며, 기본적으로 DXGI\SWAP\CHAIN\FLAG\FRAME\LATENCY\WAITABLE_OBJECT 플래그가 있는 D3D11 스왑체인을 생성합니다. 자세한 내용은 여기를 참조하여 입력 대응 속도를 더 빠르게 할 수 있습니다. 이 옵션은 기본 설정상 비활성화되어 있는데, 오래된 GPU 드라이버가 탑재된 하드웨어에서 이 옵션을 적용하면 게임의 렉이 심해지기 때문입니다. 이 옵션을 사용하게 되면 하드웨어 퍼포먼스가 제대로 작동할 만한지 게임을 반드시 프로파일해야 합니다.

성능

해당 옵션은 Package.appxmanifest로 직접 복사됩니다.

참고: 이전 패키지 위에 게임을 빌드할 경우 Package.appxmanifest를 덮어쓰기가 진행되지 않습니다.


• 2017–05–16 편집 리뷰 없이 페이지 수정됨

유니버설 Windows 플랫폼(Universal Windows Platform): C# 스크립트의 WinRT API(WinRT API in C# scripts)
스크립팅 백엔드(Scripting Backend)