You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:15:38