本文主要讨论的问题:
- 1、事件的管理,事件触发,事件响应实现
- 2、不同的平台(设备)操作内容,如何归并到统一的事件接口里
- 3、 如何用EventSystems手动分发一个EventTrigger事件
- 4、为OnPointerDown事件绑定一个实现的方法
一、事件的管理,事件触发,事件响应实现
- 1、事件系统-EventSystems分发事件
- 2、事件触发器-EventTrigger触发对应的事件
- 3、注册到事件的函数-OnBeginDrag(PointerEventData data){…}完成具体的实现
大概是这个样子:
二、不同的平台(设备)操作内容,如何归并到统一的事件接口里
举例:在桌面模式,鼠标点物体的时候,我们激发OnPointerDown事件;同理,如果收一体机头盔,左右手柄的touch键或者trigger键点击到物体的时候,我们都指定响应OnPointerDown事件
平台 | 交互的内容 | 统一后的事件注册接口 |
---|
PC桌面 | 鼠标任意键点击到GameObject | OnPointerDown() | VR 头盔手柄 | 左右手柄【touch/trigger键】点击GameObject | OnPointerDown() |
框架搭建的好,那么一套逻辑多处使用!!!!
三、如何用EventSystems手动分发一个EventTrigger事件
举例:如何分发一个OnPointerDown事件
PointerEventData eventData = new PointerEventData(EventSystem.current)
ExecuteEvents.Execute(myGameObject, eventData, ExecuteEvents.pointerDownHandler);
四、为OnPointerDown事件绑定一个实现的方法
此处用到一个扩展方法AddListener,请参考之前的博文:
如何用AddListener为PointerEvent增加事件绑定
myGameObject.GetComponent<EventTrigger>().AddListener(EventTriggerType.PointerDown, (PointerEventData eventData) =>
{
Debug.Log($"{go.name} PointerDown()");
});
|