如何在Unity VR应用中通过脚本禁用/启用Tracked Pose Driver?
禁用/启用VR主相机TrackedPoseDriver的脚本实现
要通过脚本控制HMD位置追踪,核心就是获取主相机上的TrackedPoseDriver组件,然后修改它的enabled属性,以下是具体实现方式:
方法一:通过默认主相机获取
Unity中带有MainCamera标签的相机可直接通过Camera.main获取,再提取对应的组件:
using UnityEngine; using UnityEngine.XR; public class VRTrackControl : MonoBehaviour { // 禁用HMD位置追踪 public void DisableHMDPoseTracking() { TrackedPoseDriver poseDriver = Camera.main.GetComponent<TrackedPoseDriver>(); if (poseDriver != null) { poseDriver.enabled = false; } } // 重新启用HMD位置追踪 public void EnableHMDPoseTracking() { TrackedPoseDriver poseDriver = Camera.main.GetComponent<TrackedPoseDriver>(); if (poseDriver != null) { poseDriver.enabled = true; } } }
方法二:手动指定相机对象
如果场景中的主相机没有MainCamera标签,或者需要精确指定目标相机,可以在脚本中暴露一个相机变量,在Inspector面板中拖入目标相机:
using UnityEngine; using UnityEngine.XR; public class VRTrackControl : MonoBehaviour { [Tooltip("拖入你的VR主相机对象")] public Camera vrMainCamera; public void ToggleHMDPoseTracking(bool isEnabled) { if (vrMainCamera == null) return; TrackedPoseDriver poseDriver = vrMainCamera.GetComponent<TrackedPoseDriver>(); if (poseDriver != null) { poseDriver.enabled = isEnabled; } } }
注意事项
- 脚本必须引入
UnityEngine.XR命名空间,否则无法识别TrackedPoseDriver类 - 每次获取组件前建议做空值判断,避免空引用报错
- 若项目使用XR Interaction Toolkit,该逻辑依然适用,因为
TrackedPoseDriver是XR模块的核心组件
内容的提问来源于stack exchange,提问作者aarelovich
相关产品推荐
相关产品推荐

