Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan beskriver hur du använder WinRT-API:er i ditt Unity-projekt för HoloLens.
Mixed Reality API:er
En Mixed Reality fokuserad delmängd av Windows SDK har gjorts tillgänglig i en .NET Standard 2.0-kompatibel projektion, som du kan använda i projektet utan preprocessor-direktiv. De flesta API:er i Windows.Perception och Windows.UI.Input.Spatial-namnrymder ingår och kan utökas till att omfatta ytterligare API:er i framtiden. De projicerade API:erna kan användas när de körs i redigeraren, vilket möjliggör användning av uppspelningsläge. Om du vill använda den här projektionen gör du följande ändringar i projektet:
Lägg till en referens till UPM-paketet Mixed Reality WinRT Projections med hjälp av Mixed Reality-funktionsverktyget.
Prefixreferenser till
Windows
namnområdet medMicrosoft.
:using namespace Microsoft.Windows.Perception.Spatial;
Anteckning
Om du importerar det här paketet kan det orsaka problem med namnområdesmatchning om projektet har infogade referenser till några
Windows.*
namnområden, där kompilatorn försöker matcha mot ett motsvarandeMicrosoft.Windows.*
namnområde. I det här fallet rekommenderar vi att du antingen uppdaterar dessa referenser för att användaglobal::Windows.*
eller uppdatera skripten för att importera det specifikaWindows.*
namnområdet som enusing
instruktion.Ersätt inbyggda pekare med
FromNativePtr
:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Inkludera WinRT API-anrop villkorligt
Du kan också använda WinRT-API:er i Unity-projekt som skapats för Universell Windows-plattform- och Xbox One-plattformen med hjälp av preprocessor-direktiv. All kod som du skriver i Unity-skript som riktar in sig på WinRT-API:er måste inkluderas villkorsstyrt endast för dessa versioner.
Detta kan göras via två steg i Unity:
- API-kompatibilitetsnivån måste anges till .NET 4.6 eller .NET Standard 2.0 i spelarinställningarna
- Redigera>Projektinställningar>Spelare>Konfiguration>Api-kompatibilitetsnivå till .NET 4.6 eller .NET Standard 2.0
- Preprocessor-direktivet ENABLE_WINMD_SUPPORT måste omslutas med all WinRT-utnyttjad kod
Följande kodfragment kommer från unity-sidan för Universell Windows-plattform: WinRT API i C#-skript. I det här exemplet returneras ett annonserings-ID, men endast på UWP- och Xbox One-versioner:
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
}
}
Redigera dina skript i ett Unity C#-projekt
När du dubbelklickar på ett skript i Unity-redigeraren startar det som standard skriptet i ett redigeringsprojekt. WinRT-API:erna verkar vara okända eftersom Visual Studio-projektet inte refererar till Windows Runtime. ENABLE_WINMD_SUPPORT-direktivet är odefinierat och all #if omsluten kod ignoreras tills du skapar projektet i en UWP Visual Studio-lösning.