API WinRT avec Unity pour HoloLens
Cette page explique comment utiliser les API WinRT dans votre projet Unity pour HoloLens.
API Mixed Reality
Un sous-ensemble Mixed Reality du Kit de développement logiciel (SDK) Windows a été mis à disposition dans une projection compatible avec .NET Standard 2.0, que vous pouvez utiliser dans votre projet sans directives de préprocesseur. La plupart des API des espaces de noms Windows.Perception et Windows.UI.Input.Spatial sont incluses et peuvent être étendues pour inclure d’autres API à l’avenir. Les API projetées peuvent être utilisées lors de l’exécution dans l’éditeur, ce qui permet d’utiliser le mode Lecture. Pour utiliser cette projection, apportez les modifications suivantes à votre projet :
Ajoutez une référence au package UPM Mixed Reality Projections WinRT à l’aide de l’outil de fonctionnalité Mixed Reality.
Préfixer les références à l’espace
Windows
de noms avecMicrosoft.
:using namespace Microsoft.Windows.Perception.Spatial;
Notes
L’importation de ce package peut entraîner des problèmes de résolution d’espace de noms si votre projet a des références inline à des
Windows.*
espaces de noms, le compilateur tentant de résoudre un espace de noms correspondantMicrosoft.Windows.*
. Dans ce cas, il est recommandé de mettre à jour ces références à utiliserglobal::Windows.*
ou de mettre à jour ces scripts pour importer l’espace de noms spécifiqueWindows.*
en tant qu’instructionusing
.Remplacez les casts de pointeurs natifs par
FromNativePtr
:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Inclure de manière conditionnelle les appels d’API WinRT
Vous pouvez également utiliser les API WinRT dans les projets Unity conçus pour la plateforme plateforme Windows universelle et Xbox One à l’aide de directives de préprocesseur. Tout code que vous écrivez dans des scripts Unity qui ciblent des API WinRT doit être inclus de manière conditionnelle uniquement pour ces builds.
Pour ce faire, vous pouvez effectuer deux étapes dans Unity :
- Le niveau de compatibilité de l’API doit être défini sur .NET 4.6 ou .NET Standard 2.0 dans les paramètres du lecteur
- Modifier>Paramètres> du projetJoueur>Configuration>Niveau de compatibilité de l’API pour .NET 4.6 ou .NET Standard 2.0
- La directive de préprocesseur ENABLE_WINMD_SUPPORT doit être encapsulée autour de tout code utilisé par WinRT
L’extrait de code suivant provient de la page manuelle Unity pour plateforme Windows universelle : API WinRT dans les scripts C#. Dans cet exemple, un ID de publicité est retourné, mais uniquement sur les builds UWP et 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
}
}
Modifier vos scripts dans un projet Unity C#
Lorsque vous double-cliquez sur un script dans l’éditeur Unity, il lance par défaut votre script dans un projet d’éditeur. Les API WinRT semblent inconnues, car le projet Visual Studio ne référence pas le Windows Runtime. La directive ENABLE_WINMD_SUPPORT n’est pas définie et tout code #if encapsulé est ignoré jusqu’à ce que vous générez votre projet dans une solution Visual Studio UWP.