码迷,mamicode.com
首页 > 其他好文 > 详细

EventSystem(转)

时间:2020-09-23 23:48:12      阅读:23      评论:0      收藏:0      [点我收藏+]

标签:添加   system   导航   变化   select   eve   多个   第一个   影响   

1.EventSystem(转自:https://blog.csdn.net/ecidevilin/article/details/52503595

技术图片

 

BaseInputModule是一个抽象类,PointerInputModule继承自它,同样也是抽象类,而StandaloneInputModule和TouchInputModule又继承自PointerInputModule。

EventSystem会每一帧都处理这些输入模块:m_CurrentInputModule.Process();

而设置m_CurrentSelected的时候,会通过ExecuteEvents这个类对之前的对象执行一个被取消事件,且对新选中的对象执行一个被选中事件。这就是OnSelect和OnDeselect两个方法的由来。

而这个方法实在PointerInputModule中使用的,如果点击(或触摸)事件移动的时候,被该事件影响的对象也会发生变化,通过RaycastAll方法(传入的eventData中的position属性作为点E)获得到第一个被射线照射到的对象,如果与之前的对象不同,便变更对象(同时会回调原对象的OnPointerExit和新对象的OnPointerEnter方法)。

public static EventSystem current { get; set; } //因为是static,所以创建多个EventSystem也只有一个current,所以会报警告

2.ExecuteEvents事件的执行(转自:https://blog.csdn.net/ecidevilin/article/details/52510373

EventInterface声明了一系列interface(可以参考我之前的博客关于接口的介绍),如果经常接触UI的话,我相信你对这些接口一定不陌生。例如IPointerEnterHandler(指针进入事件接口)。一个组件添加这个接口的继承之后,再实现OnPointerEnter方法,便可以接收到指针进入事件,也就是当鼠标滑入对象所在的区域之后,便会回调OnPointerEnter方法。这些接口全都继承自IEventSystemHandler,而后者也是声明在EventInterface里的接口。

ExecuteHierarchy方法会通过GetEventChain获取target的所以父对象,并对这些对象(包括target)执行Execute方法。
GetEventHandler会遍历目标对象及其父对象,判断他们是否包含某个指定接口,如果包含则作为返回值返回。而判断方法是CanHandleEvent,通过GetEventList方法获取target上的T类型的组件列表,判断列表数量不为零。GetEventHandler主要在输入模块里被调用,用于获取某个输入事件的响应对象。

EventInterface声明了很多接口,每个接口都对应着一个事件。这些事件是由输入模块产生的,而归根结底大部分是通过Input这个类的各种属性和静态方法获取了数据才生成了事件。

导航事件可用情况下,按下上下左右键,执行moveHandler,按下确认键执行submitHandler,按下取消键执行cancelHandler。

https://blog.csdn.net/ecidevilin/article/details/52782501

 

EventSystem(转)

标签:添加   system   导航   变化   select   eve   多个   第一个   影响   

原文地址:https://www.cnblogs.com/mcyushao/p/13707137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!