Share via


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:

  1. Adjon hozzá egy hivatkozást a Mixed Reality WinRT Projections UPM-csomagra a Mixed Reality feature tool használatával.

    A Mixed Reality WinRT-vetületcsomag listája a Mixed Reality szolgáltatáseszköz platformtámogatási fejléce alatt.

  2. 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ára global::Windows.* , vagy frissítse ezeket a szkripteket az adott Windows.* névtér utasításként using történő importálásához.

  3. 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:

  1. 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
  2. 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.

Lásd még