API WinRT con Unity per HoloLensWinRT APIs with Unity for HoloLens

Questa pagina descrive come usare le API WinRT nel progetto Unity per HoloLens.This page describes how to make use of WinRT APIs in your Unity project for HoloLens.

API di realtà mistaMixed Reality APIs

Un subset incentrato sulla realtà mista del Windows SDK è stato reso disponibile in una proiezione compatibile .NET Standard 2,0, che è possibile usare nel progetto senza direttive per il preprocessore.A Mixed Reality focused subset of the Windows SDK has been made available in a .NET Standard 2.0 compatible projection, which you can use in your project without preprocessor directives. La maggior parte delle API nelle finestre.Most APIs in the Windows. Gli spazi dei nomi di percezione e Windows. UI. input. Spatial sono inclusi e possono espandersi per includere altre API in futuro.Perception and Windows.UI.Input.Spatial namespaces are included and may expand to include additional APIs in the future. Le API proiettate possono essere usate durante l'esecuzione nell'editor, che consente l'uso della modalità di riproduzione.The projected APIs can be used while running in the Editor, which enables the use of Play Mode. Per usare questa proiezione, apportare le modifiche seguenti al progetto:To use this projection, make the following modifications to your project:

  1. Aggiungere un riferimento al pacchetto NuGet Microsoft. Windows. MixedReality. DotNetWinRT usando NuGet per Unity.Add a reference to the Microsoft.Windows.MixedReality.DotNetWinRT NuGet package using NuGet for Unity.
  2. Prefisso riferimenti allo Windows spazio dei nomi con Microsoft. :Prefix references to the Windows namespace with Microsoft.:
using namespace Microsoft.Windows.Perception.Spatial;
  1. Sostituire i cast puntatore nativi con FromNativePtr :Replace native pointer casts with FromNativePtr:
var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);

Includere in modo condizionale le chiamate all'API WinRTConditionally include WinRT API calls

È anche possibile usare le API WinRT nei progetti Unity compilati per la piattaforma piattaforma UWP (Universal Windows Platform) e Xbox One usando le direttive per il preprocessore.You can also use the WinRT APIs in Unity projects built for the Universal Windows Platform and Xbox One platform by using preprocessor directives. Qualsiasi codice scritto negli script Unity destinati alle API WinRT deve essere incluso in modo condizionale solo per le compilazioni.Any code that you write in Unity scripts that target WinRT APIs must be conditionally included for only those builds.

Questa operazione può essere eseguita con due passaggi in Unity:This can be done via two steps in Unity:

  1. Il livello di compatibilità API deve essere impostato su .net 4,6 o .NET standard 2,0 nelle impostazioni del lettoreAPI compatibility level must be set to .NET 4.6 or .NET Standard 2.0 in the player settings
    • Modifica > Impostazioni progetto > Lettore > di Configurazione > di Livello di compatibilità API per .net 4,6 o .NET standard 2,0Edit > Project Settings > Player > Configuration > Api Compatibility Level to .NET 4.6 or .NET Standard 2.0
  2. La direttiva per il preprocessore ENABLE_WINMD_SUPPORT deve essere racchiusa tra qualsiasi codice sfruttato in WinRTThe preprocessor directive ENABLE_WINMD_SUPPORT must be wrapped around any WinRT-leveraged code

Il frammento di codice seguente si trova nella pagina manuale di Unity per piattaforma UWP (Universal Windows Platform): API WinRT negli script C#.The following code snippet is from the Unity manual page for Universal Windows Platform: WinRT API in C# scripts. In questo esempio viene restituito un ID pubblicitario, ma solo in UWP e Xbox One viene compilata:In this example, an advertising ID is returned, but only on UWP and 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
    }
}

Modificare gli script in un progetto C# UnityEdit your scripts in a Unity C# project

Quando si fa doppio clic su uno script nell'editor di Unity, viene avviato per impostazione predefinita lo script in un progetto di editor.When you double-click a script in the Unity editor, it will by default launch your script in an editor project. Le API di WinRT sembreranno sconosciute perché il progetto di Visual Studio non fa riferimento al Windows Runtime.The WinRT APIs will appear to be unknown because the Visual Studio project doesn't reference the Windows Runtime. La direttiva ENABLE_WINMD_SUPPORT non è definita e qualsiasi codice #if con wrapper viene ignorato finché il progetto non viene compilato in una soluzione UWP di Visual Studio.The ENABLE_WINMD_SUPPORT directive is undefined and any #if wrapped code is ignored until you build your project into a UWP Visual Studio solution.

Vedere ancheSee also