Share via


WinRT-API's met Unity voor HoloLens

Op deze pagina wordt beschreven hoe u winRT-API's gebruikt in uw Unity-project voor HoloLens.

Mixed Reality API's

Een Mixed Reality gerichte subset van de Windows SDK is beschikbaar gemaakt in een projectie die compatibel is met .NET Standard 2.0, die u in uw project kunt gebruiken zonder preprocessor-instructies. De meeste API's in de naamruimten Windows.Perception en Windows.UI.Input.Spatial zijn opgenomen en kunnen in de toekomst worden uitgebreid met extra API's. De geprojecteerde API's kunnen worden gebruikt tijdens het uitvoeren in de editor, waardoor het gebruik van de afspeelmodus mogelijk is. Als u deze projectie wilt gebruiken, moet u de volgende wijzigingen aanbrengen in uw project:

  1. Voeg een verwijzing toe naar het UPM-pakket Mixed Reality WinRT-projecties met behulp van het hulpprogramma Mixed Reality functie.

    Een lijst met het pakket Mixed Reality WinRT-projecties onder de header Platform Support in het Mixed Reality Feature Tool.

  2. Voorvoegsel verwijst naar de Windows naamruimte met Microsoft.:

    using namespace Microsoft.Windows.Perception.Spatial;
    

    Notitie

    Het importeren van dit pakket kan problemen met naamruimteomzetting veroorzaken als uw project inlineverwijzingen naar Windows.* naamruimten bevat, waarbij de compiler probeert op te lossen op basis van een bijbehorende Microsoft.Windows.* naamruimte. In dit geval is het raadzaam om deze verwijzingen bij te werken om deze te gebruiken global::Windows.* of om deze scripts bij te werken om de specifieke Windows.* naamruimte als een using -instructie te importeren.

  3. Vervang systeemeigen aanwijzercasts door FromNativePtr:

    var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
    

WinRT API-aanroepen voorwaardelijk opnemen

U kunt de WinRT-API's ook gebruiken in Unity-projecten die zijn gebouwd voor het Universeel Windows-platform- en Xbox One-platform met behulp van preprocessor-instructies. Code die u schrijft in Unity-scripts die zijn gericht op WinRT-API's, moet voorwaardelijk worden opgenomen voor alleen deze builds.

Dit kan via twee stappen in Unity:

  1. Api-compatibiliteitsniveau moet worden ingesteld op .NET 4.6 of .NET Standard 2.0 in de spelerinstellingen
    • Bewerken>Projectinstellingen>Speler>Configuratie>API-compatibiliteitsniveau voor .NET 4.6 of .NET Standard 2.0
  2. De preprocessorrichtlijn ENABLE_WINMD_SUPPORT moet worden verpakt rond elke code die wordt gebruikt met WinRT

Het volgende codefragment is afkomstig van de handmatige unity-pagina voor Universeel Windows-platform: WinRT-API in C#-scripts. In dit voorbeeld wordt een reclame-id geretourneerd, maar alleen op UWP- en 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
    }
}

Uw scripts bewerken in een Unity C#-project

Wanneer u dubbelklikt op een script in de Unity-editor, wordt uw script standaard gestart in een editorproject. De WinRT-API's lijken onbekend te zijn omdat het Visual Studio-project niet verwijst naar de Windows Runtime. De ENABLE_WINMD_SUPPORT-instructie is niet gedefinieerd en alle #if verpakte code wordt genegeerd totdat u uw project in een UWP Visual Studio-oplossing bouwt.

Zie ook