UGUI源码浅读———Racast,PointerEventData,BaseInputModle

RaycastManager 管理所有的BaseRaycaster,可以移除 添加 获取,是个静态管理类。
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
BaseRaycaster 在 Enable的时候就 添加进RaycastManager里,在Disable的时候就移除,BaseRaycaster 是PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster. 的基类, 当然还可以被扩展的。

有个重要的抽象方法 就是Raycast , 从eventCam向场景发射射线
PointerEventDatta 就是触摸事件数据类,主要存放 关于触摸相关数据信息的。
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
它的父类是 BaseEventData AbstractEventData,

在构造出来的时候 就赋 于了EventSystem
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
存放 EventSystem 里两个成员 GameObject selectedObject
BaseInputModule currentInputModule。

BaseInputModule,主要是用来 发送 事件的。

BaseInputModule 里的生命周期函数
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
Process 是派发器的 派发函数,主要是 派发 给hanle 类。(响应器)
它们 被写在一个叫EventInterfaces的接口中。
UGUI源码浅读———Racast,PointerEventData,BaseInputModleUGUI源码浅读———Racast,PointerEventData,BaseInputModle
最常用的就 IPointerClickHandle (处理点击)
回调函数 void OnPointerClick(PointerEventData eventData);
用来探测点击

与之相应的 有个ExecuteEvent的类, 上面的响应器会通过 调用Execute 这个函数,把探测到的触摸信息传过去。
另外,
ExecuteEvent里还有个> s_HandlerListPool
IEventSystemHandler 事件响应池。 这个就是放所有响应器的。
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
下面这个方法 是给 InputModel 调用的,
UGUI源码浅读———Racast,PointerEventData,BaseInputModle

派发器 会调用 派发 函数, 派发函数再 通过ExcuteEvent 去 获取 到并调用其响应逻辑
UGUI源码浅读———Racast,PointerEventData,BaseInputModle
UGUI源码浅读———Racast,PointerEventData,BaseInputModle

BaseInputModule 在 唤醒和的时候就获取EventSystem组件
在 Disable 和Enable的时候
更新所有的baseInputModle,失活或者为null 就移除。
UGUI源码浅读———Racast,PointerEventData,BaseInputModle

RaycastResult 是一个结构 体, 用来存放BaseRaycaster 探测到的信息。
UGUI源码浅读———Racast,PointerEventData,BaseInputModle