API de WinRT con Unity para HoloLens
En esta página se describe cómo usar las API de WinRT en el proyecto de Unity para HoloLens.
API de Mixed Reality
Se ha puesto a disposición un subconjunto centrado Mixed Reality de Windows SDK en una proyección compatible con .NET Standard 2.0, que puede usar en el proyecto sin directivas de preprocesador. La mayoría de las API de los espacios de nombres Windows.Perception y Windows.UI.Input.Spatial se incluyen y pueden expandirse para incluir API adicionales en el futuro. Las API proyectadas se pueden usar mientras se ejecutan en el Editor, lo que permite el uso del modo de reproducción. Para usar esta proyección, realice las siguientes modificaciones en el proyecto:
Agregue una referencia al paquete UPM de proyecciones de WinRT Mixed Reality mediante la herramienta de características de Mixed Reality.
Referencias de prefijo al
Windows
espacio de nombres conMicrosoft.
:using namespace Microsoft.Windows.Perception.Spatial;
Nota:
La importación de este paquete puede provocar problemas de resolución de espacios de nombres si el proyecto tiene referencias insertadas a cualquier
Windows.*
espacio de nombres, con el compilador que intenta resolver en un espacio de nombres correspondienteMicrosoft.Windows.*
. En este caso, se recomienda actualizar esas referencias para usarglobal::Windows.*
o para actualizar esos scripts para importar el espacio de nombres específicoWindows.*
como unausing
instrucción.Reemplace las conversiones de puntero nativas por
FromNativePtr
:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Incluir condicionalmente llamadas API de WinRT
También puedes usar las API de WinRT en proyectos de Unity creados para la plataforma Plataforma universal de Windows y Xbox One mediante directivas de preprocesador. Cualquier código que escriba en scripts de Unity que tengan como destino las API de WinRT debe incluirse condicionalmente solo para esas compilaciones.
Esto se puede hacer a través de dos pasos en Unity:
- El nivel de compatibilidad de API debe establecerse en .NET 4.6 o .NET Standard 2.0 en la configuración del reproductor.
- Editar>Configuración del> proyectoJugador>Configuración>Nivel de compatibilidad de API a .NET 4.6 o .NET Standard 2.0
- La directiva de preprocesador ENABLE_WINMD_SUPPORT debe encapsularse en torno a cualquier código que se aproveche de WinRT.
El siguiente fragmento de código procede de la página manual de Unity para Plataforma universal de Windows: API de WinRT en scripts de C#. En este ejemplo, se devuelve un identificador de publicidad, pero solo en compilaciones de UWP y 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
}
}
Edición de los scripts en un proyecto de C# de Unity
Al hacer doble clic en un script en el editor de Unity, se iniciará el script de forma predeterminada en un proyecto de editor. Las API de WinRT aparecerán desconocidas porque el proyecto de Visual Studio no hace referencia al Windows Runtime. La directiva ENABLE_WINMD_SUPPORT no está definida y cualquier #if código ajustado se omite hasta que compilas el proyecto en una solución de Visual Studio para UWP.