Unity手部追踪下Oculus Integration UI按钮的OnClick()事件实现
实现Oculus PokeInteractable的点击事件替代方案
方法1:利用PokeInteractable自带的事件回调
PokeInteractable本身内置了事件触发接口,无需额外编写复杂代码,操作步骤如下:
- 选中你的PokeInteractable预制件实例,在Inspector面板找到
Poke Interactable组件 - 滚动到
Events区域,找到On Poke Completed事件(该事件对应传统Button的OnClick逻辑,在完成一次完整戳动操作后触发) - 点击
+号,将需要触发事件的脚本挂载对象拖拽至空槽中 - 从下拉菜单选择对应的脚本方法即可完成绑定
方法2:自定义脚本监听Poke事件
如果需要更灵活的逻辑控制,可以编写简单的C#脚本绑定到PokeInteractable对象上:
using UnityEngine; using Oculus.Interaction; public class PokeButtonHandler : MonoBehaviour { private PokeInteractable _pokeInteractable; void Awake() { _pokeInteractable = GetComponent<PokeInteractable>(); // 绑定完成戳动的事件回调 _pokeInteractable.WhenCompleted.AddListener(OnButtonPoked); } void OnDestroy() { // 移除监听避免内存泄漏 if (_pokeInteractable != null) { _pokeInteractable.WhenCompleted.RemoveListener(OnButtonPoked); } } private void OnButtonPoked() { // 在此编写点击触发逻辑,例如打开面板、播放音效等 Debug.Log("Poke按钮被点击"); } }
- 将该脚本挂载到你的PokeInteractable按钮对象上
- 在
OnButtonPoked方法中实现所需功能即可
注意事项
- 确保场景已正确配置Oculus Interaction的核心环境(比如OVRCameraRig、Interaction Manager这类组件必须存在)
- 若需要在按下时立即触发逻辑,可替换使用
On Poke Started事件
内容的提问来源于stack exchange,提问作者alirek
相关产品推荐
相关产品推荐

