/// <summary> /// 根据不同位置信息,加载到root下不同的节点 /// </summary> BaseUI LoadUI(string UIName) { GameObject UIPrefabs = null; BaseUI baseUI = null; UIPaths.TryGetValue(UIName, out string uiPath); if (!string.IsNullOrEmpty(uiPath)) { UIPrefabs = ResourcesMgr.GetInstance().LoadAsset(uiPath, false); } if (traRoot != null && UIPrefabs != null) { baseUI = UIPrefabs.GetComponent <BaseUI>(); if (baseUI == null) { Debug.Log($"baseUI==null,请确认窗口是否有BaseUI脚本,参数:{UIName}"); return(null); } switch (baseUI.currentUIType.type) { case UIFormType.Normal: UIPrefabs.transform.SetParent(traNormal, false); break; case UIFormType.Fixed: UIPrefabs.transform.SetParent(traFixed, false); break; case UIFormType.PopUp: UIPrefabs.transform.SetParent(traPopUp, false); break; } UIPrefabs.SetActive(false); cacheUIs.Add(UIName, baseUI); return(baseUI); } else { Debug.Log($"traRoot!=null Or UIPrefabs!=null Please Check 参数{UIName}"); } Debug.Log($"出现不可预估的错误 参数{UIName}"); return(null); }
/// <summary> /// 打开/显示UI窗体 /// </summary> public void ShowUI(string UIName) { BaseUI baseUI = null; if (string.IsNullOrEmpty(UIName)) { return; } baseUI = LoadUIToCacheUIs(UIName); if (baseUI == null) { return; } //是否清空"栈集合"中得数据 if (baseUI.currentUIType.isClearStack) { if (!ClearStack()) { Debug.Log($"栈中数据没有成功清空请检查参数{UIName}"); } } //根据不同的UI窗体的显示模式,分别作不同的加载处理 switch (baseUI.currentUIType.mode) { case UIFormShowMode.Normal: LoadUIToShowUIs(UIName); break; case UIFormShowMode.ReverseChange: PushUIToStack(UIName); break; case UIFormShowMode.HideOther: EnterUIAndHideOther(UIName); break; } }
/// <summary> /// UI窗体入栈 /// </summary> void PushUIToStack(string UIName) { //判断栈中是否有其他的窗体,有则冻结 if (staUIs.Count > 0) { BaseUI topUI = staUIs.Peek(); topUI.Freeze(); } //判断UI所有窗体 是否有指定的UI窗体 有就处理 cacheUIs.TryGetValue(UIName, out BaseUI baseUI); if (baseUI != null) { baseUI.ActiveTrue(); //把指定UI窗体,入栈 staUIs.Push(baseUI); } else { Debug.Log($"baseUI==null,请确认窗口是否有BaseUI脚本,参数:{UIName}"); } }
/// <summary> /// 关闭UI /// </summary> /// <param name="_uiType"></param> public void CloseUI(EnumUIType _uiType) { GameObject _uiObj = GetUIObject(_uiType); if (null == _uiObj) { dicOpenUIs.Remove(_uiType); } else { BaseUI _baseUI = _uiObj.GetComponent <BaseUI>(); if (null == _baseUI) { GameObject.Destroy(_uiObj); dicOpenUIs.Remove(_uiType); } else { _baseUI.StateChanged += CloseUIHandle; _baseUI.Release(); } } }
public void CloseUI(string UIName) { BaseUI baseUI = null; if (string.IsNullOrEmpty(UIName)) { Debug.Log("UI名字为空"); return; } cacheUIs.TryGetValue(UIName, out baseUI); if (baseUI == null) { Debug.Log("UI加载错误"); return; } switch (baseUI.currentUIType.mode) { case UIFormShowMode.Normal: ExitUI(UIName); break; case UIFormShowMode.Stack: PopUIFromStack(); break; case UIFormShowMode.HideOther: break; default: Debug.Log("未知UI类型"); break; } }