XRОбщий термин, охватывающий приложения виртуальной реальности (VR), дополненной реальности (AR) и смешанной реальности (MR). . Устройства, поддерживающие эти формы интерактивных приложений, можно назвать устройствами XR. Подробнее
Поставщик See in Словарь является частью проекта Unity и как минимум состоит из файла манифеста и одного или нескольких нативных плагиновнабора кода, созданного вне Unity, который создает функциональные возможности в Unity . В Unity можно использовать два типа подключаемых модулей: управляемые подключаемые модули (управляемые сборки .NET, созданные с помощью таких инструментов, как Visual Studio) и собственные подключаемые модули (библиотеки собственного кода для конкретной платформы). Подробнее
См. в Словарь. Он также может включать в себя другие активы, такие как скриптыфрагмент кода, позволяющий создавать собственные компоненты, запускать игровые события, изменять Свойства компонента с течением времени и реагировать на ввод пользователя любым удобным для вас способом. Подробнее
См. Словарь и изображения. Пока они есть в вашем проекте, когда вы запускаете редактор, Unity их обнаруживает.
Примечание. Вы должны перезапускать Unity при каждом изменении манифеста поставщика или собственного подключаемого модуляБиблиотека нативного кода для конкретной платформы, созданная вне Unity для использования в Unity. Позволяет вам получить доступ к таким функциям, как вызовы ОС и сторонние библиотеки кода, которые в противном случае были бы недоступны для Unity. Подробнее
См. в Словарь.
Макет файла
Нативные подключаемые модули должны находиться во вложенной папке относительно UnitySubsystemsManifest.json
. Если ваш провайдер не является частью пакета, Unity находит только файлы UnitySubsystemsManifest.json
, которые находятся на уровне до одного уровня в Assets
папка.
Манифест UnitySubsystems.json
Этот манифест содержит информацию о вашем провайдере, например о предоставляемых им подсистемах и имени подключаемого модуля.
Дополнительную информацию см. на странице UnitySubsystemsManifest.json.
Создание подключаемого модуля поставщика
Чтобы узнать, как создать собственный подключаемый модуль для целевой платформы, см. документацию по интерфейсу собственного подключаемого модуля Unity. После добавления динамической библиотеки в Unity убедитесь, что все параметры (например, целевая платформа в настройках подключаемого модуля) указаны правильно.
Вам необходимо зарегистрировать обработчик жизненного цикла для подсистем, которые вы собираетесь внедрить. Например:
extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API
UnityPluginLoad(IUnityInterfaces* unityInterfaces)
{
s_XrDisplay = unityInterfaces->Get();
UnityLifecycleProvider displayLifecycleHandler =
{
NULL, // This can be any object you want to pass as userData to the following functions
&Lifecycle_Initialize,
&Lifecycle_Start,
&Lifecycle_Stop,
&Lifecycle_Shutdown
};
s_XrDisplay->RegisterLifecycleProvider("Provider Plugin Name", "Display0", &displayLifecycleHandler);
// Register with other subsystems
}
Примечание. Параметры, передаваемые в RegisterLifecycleProvider
, должны соответствовать имени
и id
в вашем файле манифеста.
Когда вы позже вызываете метод Initialize
, вы получаете дескриптор экземпляра, который можно использовать для вызова методов, принимающих UnitySubsystemHandle
. Пример:
/// Callback executed when a subsystem should initialize in preparation for becoming active.
static UnitySubsystemErrorCode UNITY_INTERFACE_API Lifecycle_Initialize(UnitySubsystemHandle handle, void* data)
{
// Register for callbacks on the graphics thread.
UnityXRDisplayGraphicsThreadProvider gfxThreadProvider = { NULL, NULL, &GfxThread_WaitForNextFrameDesc, NULL };
s_XrDisplay->RegisterProviderForGraphicsThread(handle, &gfxThreadProvider);
return kUnitySubsystemErrorCodeSuccess;
}
Пакет SDK включает пример проекта, в котором создаются примеры подключаемых модулей.
Загрузка в Unity
Дополнительную информацию о загрузке поставщика в Unity см. на странице обнаружение и активация подсистем во время выполнения.