WinRT API-k a Unity for HoloLens használatával
Ez a lap bemutatja, hogyan használhatja a WinRT API-kat a HoloLenshez készült Unity-projektben.
Mixed Reality API-k
A Windows SDK egy Mixed Reality koncentrált részhalmaza elérhetővé vált egy .NET Standard 2.0-kompatibilis vetületben, amelyet előfeldolgozói irányelvek nélkül használhat a projektben. A Windows.Perception és a Windows.UI.Input.Spatial névterek legtöbb API-ja megtalálható, és a jövőben további API-kat is tartalmazhat. A kivetített API-k a Szerkesztőben való futtatás során használhatók, ami lehetővé teszi a Lejátszási mód használatát. A kivetítés használatához végezze el a következő módosításokat a projekten:
Adjon hozzá egy hivatkozást a Mixed Reality WinRT Projections UPM-csomagra a Mixed Reality feature tool használatával.
Az előtag a következő névtérre
Microsoft.
hivatkozik:Windows
using namespace Microsoft.Windows.Perception.Spatial;
Megjegyzés
A csomag importálása névtérfeloldási problémákat okozhat, ha a projekt bármilyen névtérre
Windows.*
mutató beágyazott hivatkozásokat tartalmaz, és a fordító megpróbál feloldani egy megfelelőMicrosoft.Windows.*
névtérrel. Ebben az esetben javasoljuk, hogy frissítse ezeket a hivatkozásokat a használatáraglobal::Windows.*
, vagy frissítse ezeket a szkripteket az adottWindows.*
névtér utasításkéntusing
történő importálásához.Cserélje le a natív mutatót a következőre
FromNativePtr
:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
WinRT API-hívások feltételes belefoglalása
Az Univerzális Windows-platform és az Xbox One platformhoz készült Unity-projektek WinRT API-jait is használhatja előfeldolgozó irányelvek használatával. A Unity-szkriptekben írt, WinRT API-kat célzó kódokat feltételesen csak ezekhez a buildekhez kell megadni.
Ezt a Unity két lépésében teheti meg:
- Az API-kompatibilitási szintet .NET 4.6-ra vagy .NET Standard 2.0-ra kell állítani a lejátszó beállításaiban
- Szerkesztése>Projektbeállítások>Játékos>Konfigurációs>Api-kompatibilitási szinta .NET 4.6-os vagy .NET Standard 2.0-s verziójához
- Az előfeldolgozói irányelv ENABLE_WINMD_SUPPORT minden WinRT-t használó kód köré kell burkolni
A következő kódrészlet a Unity manuális oldaláról származik Univerzális Windows-platform: WinRT API C#-szkriptekben. Ebben a példában a rendszer egy hirdetési azonosítót ad vissza, de csak az UWP-n és az Xbox One-buildeken:
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
}
}
Szkriptek szerkesztése Unity C#-projektben
Ha duplán kattint egy szkriptre a Unity-szerkesztőben, az alapértelmezés szerint elindítja a szkriptet egy szerkesztőprojektben. A WinRT API-k ismeretlennek tűnnek, mert a Visual Studio-projekt nem hivatkozik a Windows-futtatókörnyezet. A ENABLE_WINMD_SUPPORT irányelv nincs meghatározva, és a program figyelmen kívül hagyja a #if burkolt kódot, amíg a projektet egy UWP Visual Studio-megoldásba nem építi.