UNITY_UGUI

UGUI

1. 事件系统-EventSystem

处理与管理点击、键盘输入、触摸等事件

EventSystem源码声明了

private List<BaseInputModule> m_SystemInputModules = new List<BaseInputModule>();
private BaseInputModule m_CurrentInputModule;

BaseInputModule是抽象类
  PointerInputModule继承自BaseInputModule,也是抽象类
    StandaloneInputModule继承自PointerInputModule,面向PC/Mac/Linux standalone平台的输入模块
    TouchInputModule继承自PointerInputModule,面向Android/iOS等移动平台的输入模块

EventSystem在每一帧都会处理这些输入模块 -- 调用TickModules(),更新每一个InputModule
  遍历m_SystemInputModules,判断这些module是否支持当前平台且可用
  1. 若有符合条件的module,便赋值给m_CurrentInputModule并break;
  2. 若没有符合条件的module,便选取第一个支持当前平台的module作为m_CurrentInputModule
    若m_CurrentInputModule的值发生变化,且m_CurrentInputModule!=null,便调用m_CurrentInputModule.Process()
    该方法会将各种输入事件传递给EventSystem当前选中的GameObject(m_CurrentSelected)
    m_CurrentSelected大部分情况是Selectable组件
      (在设置m_CurrentSelected时,会通过ExecuteEvents对之前选中的对象执行一个被取消事件,
      对新选中的对象执行一个被选中事件(OnSelect()/ OnDeselect()))

 

猜你喜欢

转载自www.cnblogs.com/FudgeBear/p/10816872.html