Process the current tick for the module.
static public int Process(IntPtr l) { try { #if DEBUG var method = System.Reflection.MethodBase.GetCurrentMethod(); string methodName = GetMethodName(method); #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.BeginSample(methodName); #else Profiler.BeginSample(methodName); #endif #endif UnityEngine.EventSystems.BaseInputModule self = (UnityEngine.EventSystems.BaseInputModule)checkSelf(l); self.Process(); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } #if DEBUG finally { #if UNITY_5_5_OR_NEWER UnityEngine.Profiling.Profiler.EndSample(); #else Profiler.EndSample(); #endif } #endif }
protected virtual void Update() { if (current != this) { return; } TickModules(); bool changedModule = false; var systemInputModulesCount = m_SystemInputModules.Count; for (var i = 0; i < systemInputModulesCount; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported() && module.ShouldActivateModule()) { if (m_CurrentInputModule != module) { ChangeEventModule(module); changedModule = true; } break; } } // no event module set... set the first valid one... if (m_CurrentInputModule == null) { for (var i = 0; i < systemInputModulesCount; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported()) { ChangeEventModule(module); changedModule = true; break; } } } if (!changedModule && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } #if UNITY_EDITOR if (Application.isPlaying) { int eventSystemCount = m_EventSystems.Count; if (eventSystemCount > 1) { Debug.LogWarning("There are " + eventSystemCount + " event systems in the scene. Please ensure there is always exactly one event system in the scene"); } } #endif }
static public int Process(IntPtr l) { try { UnityEngine.EventSystems.BaseInputModule self = (UnityEngine.EventSystems.BaseInputModule)checkSelf(l); self.Process(); return(0); } catch (Exception e) { return(error(l, e)); } }
static int Process(IntPtr L) { try { ToLua.CheckArgsCount(L, 1); UnityEngine.EventSystems.BaseInputModule obj = (UnityEngine.EventSystems.BaseInputModule)ToLua.CheckObject <UnityEngine.EventSystems.BaseInputModule>(L, 1); obj.Process(); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
// 每个渲染帧刷一次 protected virtual void Update() { if (current != this) { return; } TickModules(); // 正常情况不用管,m_SystemInputModules在StandaloneInputModule OnEnable时会调用EventSystem.UpdateModules方法,会对m_SystemInputModules进行 // 初始化,获取挂载的所有InputModules。 bool changedModule = false; for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported() && module.ShouldActivateModule()) { if (m_CurrentInputModule != module) { ChangeEventModule(module); changedModule = true; } break; } } // no event module set... set the first valid one... if (m_CurrentInputModule == null) { for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported()) { ChangeEventModule(module); changedModule = true; break; } } } // 调用输入模块处理方法 // 一般是standaloneInputModule,touchInputModule已被standaloneInputModule取代 if (!changedModule && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } }
/// <summary> /// UI事件监听入口 /// </summary> protected virtual void Update() { if (current != this) { return; } TickModules(); bool changedModule = false; //根据用户使用什么设备输入来判断启用哪个输入模块 for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported() && module.ShouldActivateModule()) { if (m_CurrentInputModule != module) { ChangeEventModule(module); changedModule = true; } break; } } // no event module set... set the first valid one... //如果当前没有输入模块,则选取第一个支持的输入模块 if (m_CurrentInputModule == null) { for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported()) { ChangeEventModule(module); changedModule = true; break; } } } //如果当前帧没有改变输入模块则处理当前输入模块 if (!changedModule && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } }
//每帧更新 //做三件事情: // (1)在TickModules函数中遍历所有可用InputModule,并调用其UpdateModule方法 // (2)检查输入模块是否发生变化。遍历InputModule列表,找到第一个可用(被支持且被激活)的InputModule,设置m_CurrentInputModule // (3)如果当前输入模块没发生变化,调用当前InputModule的Process处理函数 protected virtual void Update() { if (current != this) { return; } TickModules(); bool changedModule = false; for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported() && module.ShouldActivateModule()) { if (m_CurrentInputModule != module) { ChangeEventModule(module); changedModule = true; } break; } } // no event module set... set the first valid one... //如果上面循环没有正确设置输入模块,那么选在第一个有效模块作为当前输入模块 if (m_CurrentInputModule == null) { for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported()) { ChangeEventModule(module); changedModule = true; break; } } } // 输入模块没有发生变化 if (!changedModule && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } }
//事件系统的更新核心 protected virtual void Update() { if (current != this) { return; } TickModules(); // 更新各个输入模块的状态 bool changedModule = false; for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; //判断是否支持当前平台,且是否应该激活 if (module.IsModuleSupported() && module.ShouldActivateModule()) { if (m_CurrentInputModule != module) { ChangeEventModule(module); changedModule = true; } break; } } // no event module set... set the first valid one... if (m_CurrentInputModule == null) { for (var i = 0; i < m_SystemInputModules.Count; i++) { var module = m_SystemInputModules[i]; if (module.IsModuleSupported()) { ChangeEventModule(module); changedModule = true; break; } } } if (!changedModule && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } }
protected virtual void Update() { if (current != this) { return; } TickModules(); bool flag = false; for (int i = 0; i < m_SystemInputModules.Count; i++) { BaseInputModule baseInputModule = m_SystemInputModules[i]; if (baseInputModule.IsModuleSupported() && baseInputModule.ShouldActivateModule()) { if (m_CurrentInputModule != baseInputModule) { ChangeEventModule(baseInputModule); flag = true; } break; } } if (m_CurrentInputModule == null) { for (int j = 0; j < m_SystemInputModules.Count; j++) { BaseInputModule baseInputModule2 = m_SystemInputModules[j]; if (baseInputModule2.IsModuleSupported()) { ChangeEventModule(baseInputModule2); flag = true; break; } } } if (!flag && m_CurrentInputModule != null) { m_CurrentInputModule.Process(); } }