UGUI事件传递流程解析

本文探讨了Unity3D的UGUI事件传递流程,从监测器、采集器、派发器到响应器四个模块进行详细解析。通过分析源码,揭示了EventSystem、BaseInputModule、BaseRaycaster和IEventSystemHandler等类在事件处理中的角色。同时,介绍了编辑器类的使用,并提供了事件处理的类图和调用流程图,帮助读者深入理解UGUI事件系统。
摘要由CSDN通过智能技术生成

很多Unity3D项目都使用了UGUI,但并不是所有人都研究过它的内部结构。针对事件的传递过程,会问住大多数未深入思考过的开发者。由于UGUI是开源的,我们可以通过查看源码来熟悉它的原理,它的地址在可以找到。

事件体系

首先要说明,事件体系的基础是设计模式中的观察者模式,因此按照标准的Subject和Observer来解读没有任何问题。但在这里,我更希望以功能为导向,将事件体系划分成更易于理解的模块。按我的划分方式,事件体系由四部分组成,分别是:

  • 监测器
  • 采集器
  • 派发器
  • 响应器

这四个模块大致的依赖关系如下:

这里写图片描述

其中用户的操作被监测器驱动的采集器捕获,接着监测器将反馈的信息通知到派发器中,最后通过派发器将事件传播出去。

Unity3d 实现

在Unity3d中,功能模块的每个部分都有对应的实现类。

  • 监测器(Monitor)对应类为EventSystem。它重写了MonoBehavior的Update方法,会在每一帧更新挂载在同一个GameObject上的采集器组件状态,并判断是否应该激活派发器,如果是,则去调用各个派发器中的派发函数Process。

  • 采集器(Collector)由两部分组成,对应类分别为BaseInputModule和BaseRaycaster,在UGUI中默认使用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值