MRTK2 Interactable接收器选择:OnPress、ButtonPressed与OnClick的区别
1. 设计定位与触发场景
OnPressReceiver(Interactable内置)
是MRTK为全息交互量身定制的按压接收器,专门区分远距离AirTap和近距离触摸按压两种核心交互场景。它和Interactable的状态机深度绑定,会根据交互类型自动匹配对应的反馈逻辑,所以内置了两种音效选项,分别对应AirTap触发和触摸按压触发的音效。PressableButtonHololens2.ButtonPressed
是针对HoloLens2触摸硬件优化的专属事件,聚焦于物理触摸交互的细分阶段——它的两种音效选项分别对应“触摸按下开始”和“按压到位触发按钮动作”两个节点,完全贴合HoloLens2的触摸触感反馈逻辑,只响应触摸输入。OnClick事件
本质是Unity UI系统的通用点击事件,MRTK将其集成到Interactable中是为了兼容Unity原生工作流。它不区分交互类型,不管是AirTap、触摸、甚至键盘输入,只要触发了按钮的“点击”动作就会统一触发,因此仅提供一种通用音效选项,没有针对全息交互的场景细分。
2. 音效差异的根源
前两者(OnPressReceiver、ButtonPressed)都是为HoloLens2的特定全息交互场景设计的,需要匹配不同交互的用户体验需求,所以提供多音效选项;而OnClick是通用化设计,追求的是跨交互方式的统一触发逻辑,因此不做音效细分。
3. 实践建议
如果需要保持AirTap和触摸交互的音效差异化,继续使用**OnPressReceiver(处理AirTap)+ PressableButtonHololens2.ButtonPressed(处理触摸)**的组合是最优解;如果你的场景不需要区分交互方式,只需要统一的点击反馈,再考虑使用OnClick事件。
内容的提问来源于stack exchange,提问作者DumbQuestionsAnyway

