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:
Aggiungere un riferimento al pacchetto UPM Realtà mista proiezioni WinRT usando lo strumento di funzionalità Realtà mista.
Prefissi riferimenti allo
Windows
spazio dei nomi conMicrosoft.
: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 corrispondenteMicrosoft.Windows.*
. In questo caso, è consigliabile aggiornare tali riferimenti da usareglobal::Windows.*
o per aggiornare tali script per importare lo spazio dei nomi specificoWindows.*
come istruzioneusing
.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:
- 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
- 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.