HoloLens용 Unity를 사용하는 WinRT API

이 페이지에서는 HoloLens용 Unity 프로젝트에서 WinRT API를 사용하는 방법을 설명합니다.

Mixed Reality API

전처리기 지시문 없이 프로젝트에서 사용할 수 있는 .NET Standard 2.0 호환 프로젝션에서 Windows SDK의 Mixed Reality 중심 하위 집합을 사용할 수 있습니다. Windows.Perception 및 Windows.UI.Input.Spatial 네임스페이스의 대부분의 API가 포함되며 향후 추가 API를 포함하도록 확장될 수 있습니다. 프로젝스된 API는 편집기에서 실행하는 동안 사용할 수 있으므로 재생 모드를 사용할 수 있습니다. 이 프로젝션을 사용하려면 프로젝트를 다음과 같이 수정합니다.

  1. Mixed Reality 기능 도구를 사용하여 Mixed Reality WinRT 프로젝션 UPM 패키지에 대한 참조를 추가합니다.

    Mixed Reality 기능 도구의 플랫폼 지원 헤더 아래에 있는 Mixed Reality WinRT 프로젝션 패키지 목록입니다.

  2. 다음을 사용하여 네임스페Microsoft.Windows 스에 대한 접두사 참조:

    using namespace Microsoft.Windows.Perception.Spatial;
    

    참고

    이 패키지를 가져오면 프로젝트에 네임스페이스에 Windows.* 대한 인라인 참조가 있고 컴파일러가 해당 Microsoft.Windows.* 네임스페이스에 대해 해결하려고 시도하는 경우 네임스페이스 확인 문제가 발생할 수 있습니다. 이 경우 사용할 참조를 업데이트하거나 특정 Windows.* 네임스페이스를 global::Windows.* 문으로 using 가져오도록 해당 스크립트를 업데이트하는 것이 좋습니다.

  3. 네이티브 포인터 캐스트를 다음으로 바 FromNativePtr꿉니다.

    var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
    

조건부로 WinRT API 호출 포함

전처리기 지시문을 사용하여 유니버설 Windows 플랫폼 및 Xbox One 플랫폼용으로 빌드된 Unity 프로젝트에서 WinRT API를 사용할 수도 있습니다. WinRT API를 대상으로 하는 Unity 스크립트에서 작성하는 모든 코드는 해당 빌드에 대해서만 조건부로 포함되어야 합니다.

이 작업은 Unity의 두 단계를 통해 수행할 수 있습니다.

  1. 플레이어 설정에서 API 호환성 수준을 .NET 4.6 또는 .NET Standard 2.0 으로 설정해야 합니다.
    • 편집>프로젝트 설정>플레이어>구성>.NET 4.6 또는 .NETStandard 2.0대한 API 호환성 수준
  2. 전처리기 지시문 ENABLE_WINMD_SUPPORT WinRT 레버리지 코드로 래핑되어야 합니다.

다음 코드 조각은 유니버설 Windows 플랫폼 대한 Unity 수동 페이지의 C# 스크립트에서 WinRT API입니다. 이 예제에서는 광고 ID가 반환되지만 UWP 및 Xbox One 빌드에서만 반환됩니다.

using UnityEngine;
public class WinRTAPI : MonoBehaviour {
    void Update() {
        auto adId = GetAdvertisingId();
        // ...
    }

    string GetAdvertisingId() {
        #if ENABLE_WINMD_SUPPORT
            return Windows.System.UserProfile.AdvertisingManager.AdvertisingId;
        #else
            return "";
        #endif
    }
}

Unity C# 프로젝트에서 스크립트 편집

Unity 편집기에서 스크립트를 두 번 클릭하면 기본적으로 편집기 프로젝트에서 스크립트가 시작됩니다. Visual Studio 프로젝트에서 Windows 런타임 참조하지 않으므로 WinRT API는 알 수 없는 것처럼 보입니다. ENABLE_WINMD_SUPPORT 지시문은 정의되지 않으며 프로젝트를 UWP Visual Studio 솔루션으로 빌드할 때까지 #if 래핑된 코드는 무시됩니다.

참고 항목