Rozhraní WINRT API s Unity pro HoloLens
Tato stránka popisuje, jak využít rozhraní WinRT API v projektu Unity pro HoloLens.
rozhraní API Mixed Reality
V projekci kompatibilní s .NET Standard 2.0 byla zpřístupněna podmnožina sady Windows SDK zaměřená na Mixed Reality, kterou můžete použít v projektu bez direktiv preprocesoru. Většina rozhraní API v oborech názvů Windows.Perception a Windows.UI.Input.Spatial je zahrnutá a v budoucnu se můžou rozšířit o další rozhraní API. Předpokládané rozhraní API je možné použít při spuštění v editoru, který umožňuje použití režimu přehrávání. Pokud chcete tuto projekci použít, proveďte v projektu následující změny:
Přidejte odkaz na balíček UPM Mixed Reality WinRT Projections pomocí nástroje Mixed Reality Feature Tool.
Předpona odkazuje na
Windows
obor názvů pomocíMicrosoft.
:using namespace Microsoft.Windows.Perception.Spatial;
Poznámka
Import tohoto balíčku může způsobit problémy s řešením oboru názvů, pokud váš projekt obsahuje vložené odkazy na libovolný
Windows.*
obor názvů, přičemž kompilátor se pokouší problém vyřešit s odpovídajícímMicrosoft.Windows.*
oborem názvů. V takovém případě se doporučuje buď tyto odkazy aktualizovat tak, aby používalyglobal::Windows.*
, nebo tyto skripty aktualizovat a importovat konkrétníWindows.*
obor názvů jako příkazusing
.Nahraďte nativní přetypování ukazatele za
FromNativePtr
:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Podmíněné zahrnutí volání rozhraní API WinRT
Rozhraní WinRT API můžete také použít v projektech Unity vytvořených pro platformu Univerzální platforma Windows a Xbox One pomocí direktiv preprocesoru. Veškerý kód, který napíšete ve skriptech Unity, které cílí na rozhraní WinRT API, musí být podmíněně zahrnutý jenom pro tato sestavení.
Můžete to provést dvěma kroky v Unity:
- Úroveň kompatibility rozhraní API musí být v nastavení přehrávače nastavená na .NET 4.6 nebo .NET Standard 2.0 .
- Upravit>Nastavení> projektuHráč>Konfigurace>Úroveň kompatibility rozhraní API pro .NET 4.6 nebo .NET Standard 2.0
- Direktiva preprocesoru ENABLE_WINMD_SUPPORT musí být zabalená kolem jakéhokoli kódu, který využívá WinRT.
Následující fragment kódu pochází z ruční stránky Unity pro Univerzální platforma Windows: WinRT API ve skriptech jazyka C#. V tomto příkladu se vrátí reklamní ID, ale jenom v buildech UPW a 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
}
}
Úprava skriptů v projektu Unity C#
Po poklikání na skript v editoru Unity se skript ve výchozím nastavení spustí v projektu editoru. Rozhraní WINRT API se budou zdát neznámá, protože projekt sady Visual Studio neodkazuje na prostředí Windows Runtime. Direktiva ENABLE_WINMD_SUPPORT není definována a všechny #if zabalené kódy jsou ignorovány, dokud projekt nevytvoříte do řešení pro UPW v sadě Visual Studio.