Beispiel #1
0
        public async ETTask OpenUIAsync <T>(string UIName, UILayerNew layer = UILayerNew.Normal, UIOpenType openType = UIOpenType.Stack, params object[] objs) where T : UIBaseComponent, new()
        {
            await ETModel.Game.Scene.GetComponent <ResourcesComponent>().CacheBundleAsync(UIName);

            GameObject obj  = (GameObject)ETModel.Game.Scene.GetComponent <ResourcesComponent>().GetAsset(UIName);
            UIBase     c_ui = UIHelper.Create <T>(UIName, obj, objs);

            UIHelper.HandlerUI(c_ui, layer, openType, this.ui_base);
            c_ui.GetComponent <T>();
        }
Beispiel #2
0
        public static void HandlerUI(UIBase _uibase, UILayerNew layer, UIOpenType openType, Dictionary <UILayerNew, List <UIBase> > ui_base)
        {
            List <UIBase> layerQueue = null;

            if (ui_base.ContainsKey(layer))
            {
                layerQueue = ui_base[layer];
            }
            else
            {
                layerQueue = new List <UIBase>();
                ui_base.Add(layer, layerQueue);
            }

            switch (layer)
            {
            case UILayerNew.GameUI:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().GameUI, false);
                break;

            case UILayerNew.Fixed:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().Fixed, false);
                break;

            case UILayerNew.Normal:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().Normal, false);
                break;

            case UILayerNew.TopBar:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().TopBar, false);
                break;

            case UILayerNew.PopUp:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().PopUp, false);
                break;

            case UILayerNew.GuideUi:
                _uibase.GameObject.transform.SetParent(Game.Scene.GetComponent <UIManagerComponent>().GuideUI, false);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(layer), layer, null);
            }

            UIBase lastUibase = layerQueue.Count == 0? null : layerQueue[layerQueue.Count - 1];

            if (lastUibase != null)
            {
                switch (openType)
                {
                case UIOpenType.Stack:
                    lastUibase.Hidden();
                    layerQueue.Remove(lastUibase);
                    layerQueue.Add(_uibase);
                    break;

                case UIOpenType.Replace:
                    lastUibase.OnClose();
                    layerQueue.Remove(lastUibase);
                    layerQueue.Add(_uibase);
                    break;
                }
            }
            else
            {
                switch (openType)
                {
                case UIOpenType.Stack:
                    layerQueue.Add(_uibase);
                    break;

                case UIOpenType.Replace:
                    layerQueue.Add(_uibase);
                    break;
                }
            }
        }