UnityEngine.SpatialTracking.dll 核心功能与缺失影响
UnityEngine.SpatialTracking.dll 是 Unity XR 运行时体系中的姿态追踪程序集,命名空间为 UnityEngine.SpatialTracking,负责把 XR 设备上报的位姿数据转换为 Unity 场景中可直接使用的 Transform 变换。它是连接底层 XR 插件(OpenXR、Oculus XR、旧版 XR SDK)与上层游戏逻辑的中间层。
一、核心功能
- TrackedPoseDriver 组件:这是该程序集最核心的运行时组件。它按帧轮询 XRNode(如 Head、LeftHand、RightHand、Tracker)的位姿,写入挂载对象的 Position 与 Rotation,并支持分别开关位置追踪与旋转追踪。
- 姿态数据源抽象:通过 PoseDataSource 与 TrackedPoseDriverData 抽象出"数据从哪来",使同一套驱动逻辑既能对接旧版 Input Tracking API,也能对接新版 XR SDK 的 InputDevice 接口。
- 6DoF 姿态同步与坐标系转换:完成追踪空间到 Unity 世界空间的坐标映射,保证头显与主摄像机视角严格对齐,手柄模型随实机移动。
- 追踪状态管理:处理追踪丢失、设备重连、姿态无效等异常状态,避免物体瞬移或数值抖动。
- 编辑器与运行时一致:在 Editor 中可通过 XR 模拟输入驱动同一组件,降低真机联调成本。
二、缺失该 DLL 的典型影响
- 脚本引用断裂:已挂载 TrackedPoseDriver 的物体在加载时反序列化失败,Inspector 显示 Missing Script,预制体与场景引用全部失效。
- 运行时异常:触发调用时抛出 FileNotFoundException 或 DllNotFoundException,XR 初始化流程中断。
- 姿态不同步:头显与摄像机脱钩,出现相机不动、画面锁死、双击抖动或手柄模型停留在原点等现象。
- 依赖链崩塌:XR Interaction Toolkit、XR Legacy Input Helpers 及大量示例资源因底层依赖缺失而编译或加载报错。
- 构建期问题:Editor 正常但打包后崩溃,通常是 Managed Stripping 误剔除该程序集,需在 link.xml 中保留。
排查建议:确认 Unity 安装目录下 XR 模块完整;检查 Packages 中 XR 相关包版本匹配;在 Player Settings 中关闭过度代码剥离,或显式保留 Unity.XR、UnityEngine.SpatialTracking 程序集。