Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как использовать API-интерфейсы WinRT в проекте Unity для HoloLens.
API Смешанная реальность
В проекции, совместимой с .NET Standard 2.0, доступное Смешанная реальность подмножество windows SDK, которое можно использовать в проекте без директив препроцессора. Большинство API в пространствах имен Windows.Perception и Windows.UI.Input.Spatial включены и в будущем могут быть расширены, чтобы включить дополнительные API. Проецируемые API можно использовать во время выполнения в редакторе, что позволяет использовать режим воспроизведения. Чтобы использовать эту проекцию, внесите следующие изменения в проект:
Добавьте ссылку на пакет UPM Смешанная реальность проекций WinRT с помощью средства Смешанная реальность Feature Tool.
Префикс ссылок на
Windowsпространство имен с помощьюMicrosoft.:using namespace Microsoft.Windows.Perception.Spatial;Примечание
Импорт этого пакета может привести к проблемам с разрешением пространств имен, если в проекте есть встроенные ссылки на какие-либо
Windows.*пространства имен, при этом компилятор пытается разрешить для соответствующегоMicrosoft.Windows.*пространства имен. В этом случае рекомендуется либо обновить эти ссылки для использованияglobal::Windows.*, либо обновить эти скрипты для импорта конкретногоWindows.*пространства имен в качестве инструкцииusing.Замените собственные приведения указателей на
FromNativePtr:var worldOrigin = SpatialCoordinateSystem.FromNativePtr(unityWorldOriginPtr);
Условное включение вызовов API WinRT
Вы также можете использовать API-интерфейсы WinRT в проектах Unity, созданных для платформы универсальная платформа Windows и Xbox One, с помощью директив препроцессора. Любой код, который вы пишете в скриптах Unity, предназначенных для API WinRT, должен быть условно включен только для этих сборок.
Это можно сделать с помощью двух шагов в Unity:
- В параметрах проигрывателя должен быть установлен уровень совместимости API .NET 4.6 или .NET Standard 2.0 .
- Редактировать>Параметры> проектаИгрок>Конфигурации>Уровень совместимости API с .NET 4.6 или .NET Standard 2.0
- Директива препроцессора ENABLE_WINMD_SUPPORT должна быть заключена в оболочку вокруг любого кода, который использует WinRT.
Следующий фрагмент кода приведен на странице руководства Unity для универсальная платформа Windows: API WinRT в скриптах C#. В этом примере возвращается идентификатор рекламы, но только в сборках UWP и 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
}
}
Изменение скриптов в проекте Unity C#
Если дважды щелкнуть скрипт в редакторе Unity, он по умолчанию запустит скрипт в проекте редактора. API-интерфейсы WinRT будут неизвестны, так как проект Visual Studio не ссылается на среда выполнения Windows. Директива ENABLE_WINMD_SUPPORT не определена, и любой #if упакованный код игнорируется до тех пор, пока вы не встроите проект в решение UWP Visual Studio.