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는 편집기에서 실행하는 동안 사용할 수 있으므로 재생 모드를 사용할 수 있습니다. 이 프로젝션을 사용하려면 프로젝트를 다음과 같이 수정합니다.
Mixed Reality 기능 도구를 사용하여 Mixed Reality WinRT 프로젝션 UPM 패키지에 대한 참조를 추가합니다.
접두사는 를 사용하여 네임스페이
Windows
스에 대한 참조입니다Microsoft.
.using namespace Microsoft.Windows.Perception.Spatial;
참고
이 패키지를 가져오면 프로젝트에 네임스페이스에
Windows.*
대한 인라인 참조가 있고 컴파일러가 해당Microsoft.Windows.*
네임스페이스에 대해 resolve 경우 네임스페이스 확인 문제가 발생할 수 있습니다. 이 경우 사용할global::Windows.*
참조를 업데이트하거나 해당 스크립트를 업데이트하여 특정Windows.*
네임스페이스를 문으로using
가져오는 것이 좋습니다.네이티브 포인터 캐스트를 로 대체
FromNativePtr
합니다.var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
조건부로 WinRT API 호출 포함
전처리기 지시문을 사용하여 유니버설 Windows 플랫폼 및 Xbox One 플랫폼용으로 빌드된 Unity 프로젝트에서 WinRT API를 사용할 수도 있습니다. WinRT API를 대상으로 하는 Unity 스크립트에서 작성하는 모든 코드는 해당 빌드에 대해서만 조건부로 포함되어야 합니다.
이 작업은 Unity의 두 단계를 통해 수행할 수 있습니다.
- 플레이어 설정에서 API 호환성 수준을 .NET 4.6 또는 .NET Standard 2.0 으로 설정해야 합니다.
- 편집>프로젝트 설정>플레이어>구성>.NET 4.6 또는 .NETStandard 2.0에 대한 API 호환성 수준
- 전처리기 지시문 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 래핑된 코드는 무시됩니다.