API WinRT con Unity per HoloLens

Questa pagina descrive come usare le API WinRT nel progetto Unity per HoloLens.

API Realtà mista

Un Realtà mista subset incentrato di Windows SDK è stato reso disponibile in una proiezione compatibile con .NET Standard 2.0, che è possibile usare nel progetto senza direttive del preprocessore. La maggior parte delle API negli spazi dei nomi Windows.Perception e Windows.UI.Input.Spatial è inclusa e può espandersi per includere api aggiuntive in futuro. Le API proiettate possono essere usate durante l'esecuzione nell'editor, che consente l'uso della modalità di riproduzione. Per usare questa proiezione, apportare le modifiche seguenti al progetto:

  1. Aggiungere un riferimento al pacchetto UPM Realtà mista proiezioni WinRT usando lo strumento di funzionalità Realtà mista.

    Elenco del pacchetto Realtà mista proiezioni WinRT nell'intestazione Supporto della piattaforma nello strumento di Realtà mista funzionalità.

  2. Prefissi riferimenti allo Windows spazio dei nomi con Microsoft.:

    using namespace Microsoft.Windows.Perception.Spatial;
    

    Nota

    L'importazione di questo pacchetto può causare problemi di risoluzione dello spazio dei nomi se nel progetto sono presenti riferimenti inline a qualsiasi Windows.* spazio dei nomi, con il compilatore che tenta di risolvere in base a uno spazio dei nomi corrispondente Microsoft.Windows.* . In questo caso, è consigliabile aggiornare tali riferimenti da usare global::Windows.* o per aggiornare tali script per importare lo spazio dei nomi specifico Windows.* come istruzione using .

  3. Sostituire i cast del puntatore nativo con FromNativePtr:

    var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
    

Includere in modo condizionale le chiamate API WinRT

Puoi anche usare le API WinRT nei progetti Unity compilati per la piattaforma piattaforma UWP (Universal Windows Platform) e Xbox One usando le direttive del preprocessore. Qualsiasi codice scritto negli script Unity destinati alle API WinRT deve essere incluso in modo condizionale solo per tali compilazioni.

Questa operazione può essere eseguita tramite due passaggi in Unity:

  1. Il livello di compatibilità api deve essere impostato su .NET 4.6 o .NET Standard 2.0 nelle impostazioni del lettore
    • Modifica>Impostazioni> progettoGiocatore>Configurazione>Livello di compatibilità api a .NET 4.6 o .NET Standard 2.0
  2. La direttiva del preprocessore ENABLE_WINMD_SUPPORT deve essere sottoposta a wrapping intorno a qualsiasi codice winRT sfruttato

Il frammento di codice seguente proviene dalla pagina manuale di Unity per piattaforma UWP (Universal Windows Platform): API WinRT negli script C#. In questo esempio viene restituito un ID annuncio, ma solo nelle build UWP e 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
    }
}

Modificare gli script in un progetto C# unity

Quando si fa doppio clic su uno script nell'editor di Unity, verrà avviato per impostazione predefinita lo script in un progetto editor. Le API WinRT risulteranno sconosciute perché il progetto di Visual Studio non fa riferimento alla Windows Runtime. La direttiva ENABLE_WINMD_SUPPORT non è definita e qualsiasi #if codice di cui è stato eseguito il wrapping viene ignorato fino a quando non si compila il progetto in una soluzione di Visual Studio UWP.

Vedi anche