Interfejsy API WinRT z aparatem Unity dla urządzenia HoloLens
Na tej stronie opisano sposób korzystania z interfejsów API WinRT w projekcie aparatu Unity dla urządzenia HoloLens.
interfejsy API Mixed Reality
Mixed Reality W projekcie zgodnym z platformą .NET Standard 2.0 udostępniono skoncentrowany podzbiór zestawu SDK systemu Windows, który można użyć w projekcie bez dyrektyw preprocesora. Większość interfejsów API w przestrzeniach nazw Windows.Perception i Windows.UI.Input.Spatial jest uwzględniona i może zostać rozwinięta w celu uwzględnienia dodatkowych interfejsów API w przyszłości. Przewidywane interfejsy API mogą być używane podczas uruchamiania w edytorze, co umożliwia korzystanie z trybu odtwarzania. Aby użyć tej projekcji, wprowadź następujące modyfikacje projektu:
Dodaj odwołanie do pakietu UPM Mixed Reality Projekcje WinRT przy użyciu narzędzia Mixed Reality Feature Tool.
Odwołania prefiksu
Windows
do przestrzeni nazw z :Microsoft.
using namespace Microsoft.Windows.Perception.Spatial;
Uwaga
Importowanie tego pakietu może powodować problemy z rozpoznawaniem przestrzeni nazw, jeśli projekt ma wbudowane odwołania do dowolnych
Windows.*
przestrzeni nazw, a kompilator próbuje rozwiązać problem z odpowiedniąMicrosoft.Windows.*
przestrzenią nazw. W takim przypadku zaleca się zaktualizowanie tych odwołań do użyciaglobal::Windows.*
lub zaktualizowanie tych skryptów w celu zaimportowania określonejWindows.*
przestrzeni nazw jakousing
instrukcji.Zastąp rzutowanie wskaźnika natywnego na :
FromNativePtr
var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Warunkowe dołączanie wywołań interfejsu API WinRT
Interfejsy API WinRT można również używać w projektach aparatu Unity utworzonych dla platformy platforma uniwersalna systemu Windows i Xbox One przy użyciu dyrektyw preprocesora. Każdy kod, który piszesz w skryptach aparatu Unity przeznaczonych dla interfejsów API WinRT, musi być warunkowo uwzględniony tylko dla tych kompilacji.
Można to zrobić za pomocą dwóch kroków w środowisku Unity:
- Poziom zgodności interfejsu API musi być ustawiony na .NET 4.6 lub .NET Standard 2.0 w ustawieniach odtwarzacza
- Edytuj>Ustawienia> projektuPlayer>Konfiguracji>Poziom zgodności interfejsu API do platformy .NET 4.6 lub .NET Standard 2.0
- Dyrektywa preprocesora ENABLE_WINMD_SUPPORT musi być opakowana wokół dowolnego kodu wykorzystującego winRT
Poniższy fragment kodu pochodzi ze strony ręcznej aparatu Unity dla platforma uniwersalna systemu Windows: interfejs API WinRT w skryptach języka C#. W tym przykładzie zwracany jest identyfikator reklamy, ale tylko w kompilacjach platformy UWP i konsoli 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
}
}
Edytowanie skryptów w projekcie aparatu Unity C#
Po dwukrotnym kliknięciu skryptu w edytorze aparatu Unity domyślnie uruchomi skrypt w projekcie edytora. Interfejsy API WinRT wydają się być nieznane, ponieważ projekt programu Visual Studio nie odwołuje się do środowisko wykonawcze systemu Windows. Dyrektywa ENABLE_WINMD_SUPPORT jest niezdefiniowana, a wszystkie #if opakowany kod są ignorowane do momentu skompiluj projekt w rozwiązaniu programu Visual Studio platformy UWP.