Manually trigger pointerEvent on a game object——用代码触发游戏物体上的Pointer Event事件

本文主要讨论的问题:

  • 1、事件的管理,事件触发,事件响应实现
  • 2、不同的平台(设备)操作内容,如何归并到统一的事件接口里
  • 3、 如何用EventSystems手动分发一个EventTrigger事件
  • 4、为OnPointerDown事件绑定一个实现的方法

一、事件的管理,事件触发,事件响应实现

  • 1、事件系统-EventSystems分发事件
  • 2、事件触发器-EventTrigger触发对应的事件
  • 3、注册到事件的函数-OnBeginDrag(PointerEventData data){…}完成具体的实现

大概是这个样子:

在这里插入图片描述

二、不同的平台(设备)操作内容,如何归并到统一的事件接口里

举例:在桌面模式,鼠标点物体的时候,我们激发OnPointerDown事件;同理,如果收一体机头盔,左右手柄的touch键或者trigger键点击到物体的时候,我们都指定响应OnPointerDown事件

平台交互的内容统一后的事件注册接口
PC桌面鼠标任意键点击到GameObjectOnPointerDown()
VR 头盔手柄左右手柄【touch/trigger键】点击GameObjectOnPointerDown()

在这里插入图片描述

框架搭建的好,那么一套逻辑多处使用!!!!

三、如何用EventSystems手动分发一个EventTrigger事件

举例:如何分发一个OnPointerDown事件

//分发事件:OnPointerDown()
PointerEventData eventData = new PointerEventData(EventSystem.current)
ExecuteEvents.Execute(myGameObject, eventData, ExecuteEvents.pointerDownHandler);//分发物体的Down事件

四、为OnPointerDown事件绑定一个实现的方法

此处用到一个扩展方法AddListener,请参考之前的博文:

如何用AddListener为PointerEvent增加事件绑定

//Down事件
myGameObject.GetComponent<EventTrigger>().AddListener(EventTriggerType.PointerDown, (PointerEventData eventData) =>
{
    Debug.Log($"{go.name} PointerDown()");
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值