Unity XR SDK
The XR SDK is no longer supported in Unity. Use OpenXR instead.
阅读时间3 分钟最后更新于 1 个月前
Unity XR SDK 的目标用户是想要开发自己的 XR 提供程序并希望该程序能用于 Unity 的专业用户。要下载 XR SDK,必须在此页面上注册才能访问。
在 Unity 中,XR SDK 包可让多个后端(称为“提供程序”)实现单个引擎功能(称为“子系统”)。用户应用程序可以在运行时选择和激活提供程序。
子系统
单个子系统包含:
- 面向开发者的 C# 接口
- 多个后端(提供程序)通过动态库实现的原生接口
- 通用引擎代码,用于处理与 C# 接口、原生接口和引擎其余部分的通信

子系统图
子系统描述符
子系统描述符是关于子系统的元数据,可以在加载或初始化子系统之前对其进行检查。子系统描述符来自清单文件并通过 C# 接口访问。 方法激活子系统并将它的一个实例提供给用户的脚本。
Create有关更多信息,请参阅子系统的运行时发现和激活页面。
子系统实例
当在子系统描述符上调用 时,会创建一个子系统实例。脚本代码与这些实例交互,从而与子系统通信。子系统本身有自己的生命周期:可以启动、停止和关闭。
Create提供程序
提供程序是子系统的原生实现。一个子系统可以有多个提供程序。某些子系统可以让多个提供程序同时处于活动状态,但另一些子系统可能是互斥的。

提供程序图
提供程序符合 Unity 原生插件接口要求,并在此基础上构建了一些额外的生命周期支持。入口点是 方法。提供程序必须从此处向它要实现的所有子系统注册。
UnityPluginLoadextern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_APIUnityPluginLoad(IUnityInterfaces* unityInterfaces){ s_XrDisplay = unityInterfaces->Get<IUnityXRDisplayInterface>(); UnityLifecycleProvider displayLifecycleHandler = { NULL, // This can be any object you want to be passed 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...}