HoloLens 용 Unity를 사용 하는 WinRT ApiWinRT APIs with Unity for HoloLens

이 페이지에서는 HoloLens 용 Unity 프로젝트에서 WinRT Api를 활용 하는 방법을 설명 합니다.This page describes how to make use of WinRT APIs in your Unity project for HoloLens.

혼합 현실 ApiMixed Reality APIs

Windows SDK의 혼합 현실 하위 집합은 전처리기 지시문이 없는 프로젝트에서 사용할 수 있는 .NET Standard 2.0 호환 프로젝션에서 사용할 수 있게 되었습니다.A Mixed Reality focused subset of the Windows SDK has been made available in a .NET Standard 2.0 compatible projection, which you can use in your project without preprocessor directives. 대부분의 Windows ApiMost APIs in the Windows. 인식 및 Windows 네임 스페이스는 포함 되며 나중에 추가 Api를 포함 하도록 확장할 수 있습니다.Perception and Windows.UI.Input.Spatial namespaces are included and may expand to include additional APIs in the future. 투영 된 Api는 편집기에서 실행 되는 동안 사용할 수 있으며이를 통해 재생 모드를 사용할 수 있습니다.The projected APIs can be used while running in the Editor, which enables the use of Play Mode. 이 프로젝션을 사용 하려면 프로젝트를 다음과 같이 수정 합니다.To use this projection, make the following modifications to your project:

  1. Unity 용 nuget을 사용 하 여 MixedReality DotNetWinRT nuget 패키지에 대 한 참조를 추가 합니다.Add a reference to the Microsoft.Windows.MixedReality.DotNetWinRT NuGet package using NuGet for Unity.
  2. Windows다음을 사용 하 여 네임 스페이스에 대 한 참조 접두사 Microsoft. :Prefix references to the Windows namespace with Microsoft.:
using namespace Microsoft.Windows.Perception.Spatial;
  1. Native pointer 캐스트를 다음으로 바꿉니다 FromNativePtr .Replace native pointer casts with FromNativePtr:
var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);

조건부로 WinRT API 호출 포함Conditionally include WinRT API calls

전처리기 지시문을 사용 하 여 유니버설 Windows 플랫폼 및 Xbox One 플랫폼에 대해 빌드된 Unity 프로젝트에서 WinRT Api를 사용할 수도 있습니다.You can also use the WinRT APIs in Unity projects built for the Universal Windows Platform and Xbox One platform by using preprocessor directives. WinRT Api를 대상으로 하는 Unity 스크립트에서 작성 하는 모든 코드는 해당 빌드에 대해서만 조건부로 포함 되어야 합니다.Any code that you write in Unity scripts that target WinRT APIs must be conditionally included for only those builds.

Unity의 두 단계를 통해이 작업을 수행할 수 있습니다.This can be done via two steps in Unity:

  1. 플레이어 설정에서 API 호환성 수준을 .net 4.6 또는 .NET Standard 2.0 으로 설정 해야 합니다.API compatibility level must be set to .NET 4.6 or .NET Standard 2.0 in the player settings
    • 편집 > 프로젝트 설정 > 플레이어 > 구성 > Api 호환성 수준이 .net 4.6 또는 .NET Standard 2.0Edit > Project Settings > Player > Configuration > Api Compatibility Level to .NET 4.6 or .NET Standard 2.0
  2. 전처리기 지시문 ENABLE_WINMD_SUPPORT 은 WinRT 활용 코드를 통해 래핑해야 합니다.The preprocessor directive ENABLE_WINMD_SUPPORT must be wrapped around any WinRT-leveraged code

다음 코드 조각은 c # 스크립트의 WINRT API 유니버설 Windows 플랫폼에 대 한 Unity 수동 페이지에서 가져온 것입니다.The following code snippet is from the Unity manual page for Universal Windows Platform: WinRT API in C# scripts. 이 예에서 광고 ID는 반환 되지만 UWP 및 Xbox One 빌드에만 해당 됩니다.In this example, an advertising ID is returned, but only on UWP and Xbox One builds:

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 # 프로젝트에서 스크립트 편집Edit your scripts in a Unity C# project

Unity 편집기에서 스크립트를 두 번 클릭 하면 기본적으로 편집기 프로젝트에서 스크립트가 시작 됩니다.When you double-click a script in the Unity editor, it will by default launch your script in an editor project. Visual Studio 프로젝트가 Windows 런타임를 참조 하지 않으므로 WinRT Api를 알 수 없는 것으로 표시 됩니다.The WinRT APIs will appear to be unknown because the Visual Studio project doesn't reference the Windows Runtime. ENABLE_WINMD_SUPPORT 지시문은 정의 되지 않으며, UWP Visual Studio 솔루션에 프로젝트를 빌드할 때까지 #if 래핑된 코드는 무시 됩니다.The ENABLE_WINMD_SUPPORT directive is undefined and any #if wrapped code is ignored until you build your project into a UWP Visual Studio solution.

참고 항목See also