public void Enter <T>(CtrlArgs args = null) where T : BaseCtrl, new() { var findCtrl = FindCtrl <T>(); if (findCtrl != null) { //已经存在 目前的方案是 :直接把 ctrl 提到最前面 ctrlCacheList.Remove(findCtrl); ctrlCacheList.Add(findCtrl); findCtrl.Enter(args); findCtrl.Active(); currMainCtrl = findCtrl; //todo : gameObject 的层级提到最高 } else { //没找到 开始一个新的 ctrl BaseCtrl newCtrl = new T(); newCtrl.Init(); ctrlCacheList.Add(newCtrl); currMainCtrl = newCtrl; //这里的回调需要 ctrl 自行在加载完之后调用 ctrl 中的 LoadFinish(之后流程会优化) newCtrl.StartLoad(() => { newCtrl.Enter(args); newCtrl.Active(); var nextIndex = ctrlCacheList.Count - 2; if (nextIndex >= 0) { BaseCtrl currCtrl = ctrlCacheList[nextIndex]; currCtrl.Inactive(); } }); } }
public override void OnEnter(CtrlArgs args) { ui.Show(); }
public void Enter(CtrlArgs args) { this.OnEnter(args); }
public virtual void OnEnter(CtrlArgs args) { }
public override void OnEnter(CtrlArgs args) { confirmArgs = (ConfirmCtrlArgs)args; ui.Show(); }