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>(); }
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; } } }