/// <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}");
     }
 }
Exemple #4
0
        /// <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();
                }
            }
        }
Exemple #5
0
        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;
            }
        }