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

Unity2022+MRTK3中Text Mesh Pro对象无法通过凝视交互的问题求助

MRTK3中TextMeshPro与StatefulInteractable凝视交互失效的排查方案

核心排查点

  • 碰撞体缺失:StatefulInteractable依赖碰撞体接收凝视交互信号,TextMeshPro对象默认无碰撞体。给TextMeshPro添加Box Collider(适配文本范围)或Mesh Collider,确保碰撞体覆盖文本区域,且不要勾选Is Trigger(除非交互逻辑需要)。
  • 交互层不匹配:检查TextMeshPro对象的Layer是否在GazeInteractor的检测范围内。打开GazeInteractor组件,查看Interaction Layer Mask,确认包含TextMeshPro所在的Layer(默认通常是UI或Interactable层)。
  • StatefulInteractable配置错误:
    • 确认组件的Hover Type设置为Gaze(或包含Gaze的复合选项),部分默认配置可能仅响应触摸/手柄交互。
    • 检查Is Enabled是否勾选,未被脚本或编辑器禁用。
    • 事件绑定逻辑需严谨:凝视进入时显示文本并取消之前的延迟隐藏调用;凝视退出时启动2秒延迟隐藏。示例逻辑:
      public TMP_Text targetText;
      
      public void ShowText()
      {
          targetText.enabled = true;
          CancelInvoke(nameof(HideText)); // 取消未执行的延迟隐藏,避免冲突
      }
      
      public void StartHideDelay()
      {
          Invoke(nameof(HideText), 2f);
      }
      
      private void HideText()
      {
          targetText.enabled = false;
      }
      
  • TextMeshPro自身状态问题:若用gameObject.SetActive(false)设置初始隐藏,会导致碰撞体失效,无法被凝视检测。建议改用TMP_Text.enabled = false控制显示状态,保持对象激活。同时排查是否有其他脚本修改文本显示状态,覆盖了StatefulInteractable的事件效果。
  • MRTK3交互系统配置:确认场景已正确配置XR Origin和Gaze输入模块,Gaze Provider组件正常启用。检查StatefulInteractable的Interactors Allowed设置,确保包含GazeInteractor类型。

关键注意事项

不要通过激活/禁用TextMeshPro对象控制显示,必须保持对象激活,仅修改文本组件的enabled状态,否则碰撞体无法被GazeInteractor检测,StatefulInteractable自然无法触发事件。

内容的提问来源于stack exchange,提问作者Khushi Naik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:48:15