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();
                }
            });
        }
    }
Пример #2
0
 public override void OnEnter(CtrlArgs args)
 {
     ui.Show();
 }
Пример #3
0
 public void Enter(CtrlArgs args)
 {
     this.OnEnter(args);
 }
Пример #4
0
 public virtual void OnEnter(CtrlArgs args)
 {
 }
    public override void OnEnter(CtrlArgs args)
    {
        confirmArgs = (ConfirmCtrlArgs)args;

        ui.Show();
    }