UGUI 源码解读-EventSystem

EventSystem事件系统的源码目录结构如下:大致可分为EventData、InputModules、Raycasters、EventSystem、ExecuteEvents。
在这里插入图片描述

EventSystem的职责:

  1. 管理和处理输入事件(InputModule)
  2. 调用Raycaster发起射线检测,获取输入事件投射到的物体
  3. 将事件发送给投射物体处理。

每个场景一般有且只有一个EventSystem,EventSystem上一般会挂一个InputModule模块。
在这里插入图片描述

EventData

  • BaseEventData:基础的事件信息,持有EventSystem

在这里插入图片描述

  • PointerEventData: 继承于BaseEventData,存储 触摸/点击/鼠标操作 事件信息,部分信息如下:
    在这里插入图片描述
    在这里插入图片描述

  • AxisEventData:继承于BaseEventData,移动相关的事件信息。
    在这里插入图片描述

InputModules

  • BaseInput, 封装了触摸和鼠标的相关事件获取。

  • BaseInputModule ,所有InputModule的基类,抽象函数public abstract void Process();,持有EventSystem,EventData,BaseInput。OnEnable中调用EventSystem#UpdateModules注册输入模块。

在这里插入图片描述

EventSystem的Update函数中,先通过TickModules调用InputModule的UpdateModule函数,然后调用Process函数分发事件。

在这里插入图片描述

  • PointerInputModule,继承于BaseInputModule,封装了一些工具函数,比如GetTouchPointerEventData用于将Touch转为EventData,GetMousePointerEventData用于将鼠标点击事件转为MouseState(MouseState存放着三个鼠标按钮的事件数据)。

  • StandaloneInputModule,继承于PointerInputModule,Process函数中,先调用ProcessTouchEvents处理触摸事件,如果没有触摸事件则调用ProcessMouseEvent处理鼠标事件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值