/// <summary>
        /// 打开一个弹窗界面
        /// </summary>
        /// <param name="popupOperate"></param>
        /// <param name="belongPageView">当前弹窗属于哪个Page 管理 ,如果=null则表示属于当前打开的界面 否则指定的参数界面 </param>
        /// <param name="isFailRecord">如果是因为优先级而无法弹出 则表示是否需要记录 如果为false 则当无法显示时候不会自动弹出,而是隐藏了</param>
        /// <param name="parameter"></param>
        ///
        public void OpenPopUp(PopupOpenOperateEnum popupOperate, UIBasePageView belongPageView, bool isFailRecord, UIParameterArgs parameter)
        {
            if (parameter == null)
            {
                Debug.LogError("parameter 不要使用null  使用默认的 UIParameterArgs.Create() 无参数方法替代");
                return;
            }
#if UNITY_EDITOR
            if (this.WindowType != WindowTypeEnum.PopUp)
            {
                Debug.LogError("OpenPopUp Fail,Not Popup Window " + this.name);
                return;
            }
#endif
            Dictionary <int, UIBasePopupView> allWillHidePopupView = GetWillHidePopupView(this, popupOperate, isFailRecord, parameter);
            foreach (var item in allWillHidePopupView)
            {
                item.Value.HideWindow(UIParameterArgs.Create());
                m_AllRecordViewPopup.RemoveAt(item.Key);
            }
            if (belongPageView == null)
            {
                belongPageView = UIBasePageView.CurOpenPage;
            }

            UIParameterArgs args0 = UIParameterArgs.Create(belongPageView, isFailRecord);
            this.ShowWindow(Helper.Instance.MegerUIParameter(args0, parameter)); //注意这里的第一个参数
            m_AllRecordViewPopup.Add(this);
        }
        private void OnLoginBtnClick()
        {
            if (m_IsShowPassworld)
            {
                Debug.LogEditorInfor("OnLoginBtnClick  >密码>" + m_InputFieldProPasswordInputField.text);
            }

            int playerNameCharCount     = System.Text.Encoding.Default.GetBytes(m_inputNameInputField.text).Length;
            int playerPasswordCharCount = System.Text.Encoding.Default.GetBytes(m_InputFieldProPasswordInputField.text).Length;

            if (playerNameCharCount < S_MinPlayerNameCharLimt || playerNameCharCount > S_MaxPlayerNameCharLimt)
            {
                Debug.LogError("用户名不合法");
                UIHelper.Instance.ShowTipsViewSync(string.Format(m_PlayerNameCharLimitStr, S_MinPlayerNameCharLimt, S_MaxPlayerNameCharLimt), 2);
                return;
            }
            if (playerPasswordCharCount < S_MinPlayerPasswordCharLimt || playerPasswordCharCount > S_MaxPlayerPasswordCharLimt)
            {
                Debug.LogError("用户密码不合法");
                UIHelper.Instance.ShowTipsViewSync(string.Format(m_PlayerPasswordCharLimitStr, S_MinPlayerPasswordCharLimt, S_MaxPlayerPasswordCharLimt), 2);
                return;
            }

            string inputPassworld = m_InputFieldProPasswordInputField.text;

            inputPassworld = inputPassworld.Trim();
            if (inputPassworld != m_RealPassworld)
            {
                if (m_LoginAccount == null)
                {
                    m_LoginAccount = new LocalAccountInfor(m_PreviousInputPlayerName, m_PreviousInputPlayerPassword);
                }

                Debug.Log("保存账户信息");
                LocalAccountMgr.Instance.UpdateLocalAccount(m_LoginAccount);
            } //更新本地账户列表



            if (UIViewReference.Instance.UiAssetUpdateView != null && UIViewReference.Instance.UiAssetUpdateView.IsActivate)
            {
                UIViewReference.Instance.UiAssetUpdateView.ClosePage(UIParameterArgs.Create(), UIParameterArgs.Create());
            }



            UIViewReference.Instance.UiCanvasMaskView.OpenWidget(UIManagerHelper.Instance.WidgetParentTrans, 0, true, UIParameterArgs.Create());

            AppSceneManager.Instance.LoadSceneAsync(SceneNameEnum.StartUp, LoadSceneModeEnum.KeepPrevious, (isComplete) =>
            {
                UIViewReference.Instance.UiCanvasMaskView.CloseWidget(false, UIParameterArgs.Create(false, true));
                if (isComplete)
                {
                    Debug.LogInfor("应用已经起来了..Go!!!");
                }
            }, () => { Debug.LogInfor("卸载其他场景完成"); }
                                                    );
        }
        /// <summary>
        /// 处理关闭当前弹窗时候的逻辑
        /// </summary>
        /// <param name="view"></param>
        /// <param name="closeOperate"></param>
        private void DealHidePopView(PopupCloseOperateEnum closeOperate)
        {
            if (m_AllRecordViewPopup.Count == 0)
            {
                return;
            }
            UIBasePopupView nectShowPage = null; //关闭这个弹窗口这个弹窗打开之前的弹窗

            switch (closeOperate)
            {
            case PopupCloseOperateEnum.Simple:
                break;

            case PopupCloseOperateEnum.AutoPopup:
                for (int dex = m_AllRecordViewPopup.Count - 1; dex >= 0; --dex)
                {
                    if (dex > 0 && m_AllRecordViewPopup[dex] == this)
                    {
                        nectShowPage = m_AllRecordViewPopup[dex - 1];
                        break;
                    }
                }
                AutoPupupView(nectShowPage);
                break;

            case PopupCloseOperateEnum.CloseAndClearCurPage:
                List <int> allPopupViewCurPage = new List <int>();
                for (int dex = m_AllRecordViewPopup.Count - 1; dex >= 0; --dex)
                {
                    if (m_AllRecordViewPopup[dex] != this && m_AllRecordViewPopup[dex].BelongPageView == this.BelongPageView)
                    {
                        allPopupViewCurPage.Add(dex);
                    }
                }

                for (int dex = 0; dex < allPopupViewCurPage.Count; ++dex)
                {
                    m_AllRecordViewPopup[dex].HideWindow(UIParameterArgs.Create());
                }    //关闭弹窗

                allPopupViewCurPage.Reverse();
                for (int dex = 0; dex < allPopupViewCurPage.Count; ++dex)
                {
                    m_AllRecordViewPopup.RemoveAt(allPopupViewCurPage[dex]);
                }    //删除打开记录

                if (m_LowerPriorityPopupView.ContainsKey(this.BelongPageView))
                {
                    m_LowerPriorityPopupView[this.BelongPageView].Clear();
                }
                break;

            default:
                Debug.LogError("没有处理的类型  " + closeOperate);
                break;
            }
        }
        /// <summary>
        /// 打开一个弹窗时候根据需求 获取需要关闭的弹窗
        /// </summary>
        /// <param name="view"></param>
        /// <param name="popupOperate"></param>
        private Dictionary <int, UIBasePopupView> GetWillHidePopupView(UIBasePopupView popupView, PopupOpenOperateEnum popupOperate, bool isFailRecord, UIParameterArgs parameter)
        {
            Dictionary <int, UIBasePopupView> allWillHidePopupView = new Dictionary <int, UIBasePopupView>();

            if (m_AllRecordViewPopup.Count == 0)
            {
                return(allWillHidePopupView);
            }

            switch (popupOperate)
            {
            case PopupOpenOperateEnum.KeepPreviousAvailable:
                break;

            case PopupOpenOperateEnum.HideAllOpenView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                }
                break;

            case PopupOpenOperateEnum.HideCurPagePopupView:
                for (int dex = 0; dex < m_AllRecordViewPopup.Count; ++dex)
                {
                    if (m_AllRecordViewPopup[dex].BelongPageView == popupView.BelongPageView)
                    {
                        allWillHidePopupView.Add(dex, m_AllRecordViewPopup[dex]);
                    }
                }     //获取当前弹窗所属的页面
                break;

            case PopupOpenOperateEnum.PriorityOrder:
                if (m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1].Priority >= popupView.Priority)
                {
                    if (isFailRecord)
                    {
                        RecordWillPopupView(popupView.BelongPageView, popupView);
                        popupView.FailShowByPriority(parameter);      //记录参数
                    }
                    else
                    {
                        popupView.HideWindow(UIParameterArgs.Create());
                    }
                }      //加入到待弹出界面中
                else
                {
                    allWillHidePopupView.Add(m_AllRecordViewPopup.Count - 1, m_AllRecordViewPopup[m_AllRecordViewPopup.Count - 1]);
                }
                break;

            default:
                Debug.LogError("没有处理的枚举类型 " + popupOperate);
                break;
            }
            return(allWillHidePopupView);
        }
 /// <summary>
 /// 关闭一个页面所有关联的Popup /Widget
 /// </summary>
 /// <param name="view"></param>
 private void ClosePageConnectView(UIBasePageView view)
 {
     if (view != null)
     {
         view.HideWindow(UIParameterArgs.Create());
         UIBasePopupView.RemoveWillPopupView(view);                                           //关闭当前界面所包含的弹窗(没有弹出的)
         UIBasePopupView.CloseConnectPopupView(view);                                         //关闭当前界面所包含的弹窗 (已经弹出的)
         UIBaseWidgetView.CloseAttachWidget(view.transform, false, UIParameterArgs.Create()); //关闭关联的Widget
     }
 }
        /// <summary>
        /// 显示Widget
        /// </summary>
        /// <param name="view"></param>
        /// <param name="parentTrans"></param>
        /// <param name="showTime"></param>
        /// <param name="isSingleton"></param>
        /// <param name="parameter"></param>
        private void ShowWidgetView(UIBaseWidgetView view, Transform parentTrans, float showTime, bool isSingleton, UIParameterArgs parameter)
        {
            if (view.rectransform.parent != parentTrans)
            {
                view.rectransform.SetParent(parentTrans);
            }
            view.rectransform.ResetRectTransProperty();

            UIParameterArgs parameter1 = UIParameterArgs.Create(parentTrans, showTime, isSingleton);

            view.ShowWindow(Helper.Instance.MegerUIParameter(parameter1, parameter));
        }
        /// <summary>
        /// 关闭页面时候 关闭关联的已经打开的弹窗
        /// </summary>
        /// <param name="pageview"></param>
        public static void CloseConnectPopupView(UIBasePageView belongPageView)
        {
            if (belongPageView == null)
            {
                Debug.LogError("ClosePopupView Is Null Page");
                return;
            }

            for (int dex = m_AllRecordViewPopup.Count - 1; dex >= 0; --dex)
            {
                if (m_AllRecordViewPopup[dex].BelongPageView == belongPageView)
                {
                    m_AllRecordViewPopup[dex].HideWindow(UIParameterArgs.Create());
                    m_AllRecordViewPopup.RemoveAt(dex);
                }
            }
        }
        /// <summary>
        /// 关闭所有关联改物体的Widget
        /// </summary>
        /// <param name="targetTrans"></param>
        public static void CloseAttachWidget(Transform targetTrans, bool isDestroyWidget, UIParameterArgs parameter)
        {
            if (m_AllWidgetView.ContainsKey(targetTrans) == false)
            {
                return;
            }
            if (parameter == null)
            {
                Debug.LogError("parameter 不要使用null  使用默认的 UIParameterArgs.Create() 无参数方法替代");
                return;
            }

            for (int dex = 0; dex < m_AllWidgetView[targetTrans].Count; ++dex)
            {
                UIParameterArgs parameter1 = UIParameterArgs.Create(isDestroyWidget);
                m_AllWidgetView[targetTrans][dex].HideWindow(Helper.Instance.MegerUIParameter(parameter1, parameter));
            }

            if (isDestroyWidget)
            {
                m_AllWidgetView[targetTrans].Clear();
            }
        }
        /// <summary>
        /// 关闭打开的Widget
        /// </summary>
        /// <param name="view"></param>
        /// <param name="isDestroyWidget"></param>
        public void CloseWidget(bool isDestroyWidget, UIParameterArgs parameter)
        {
            if (m_AllWidgetView.ContainsKey(this.BelongParent) == false)
            {
                Debug.LogError("CloseWidget Fail,Not Exit " + this.name);
                return;
            }
            if (parameter == null)
            {
                Debug.LogError("parameter 不要使用null  使用默认的 UIParameterArgs.Create() 无参数方法替代");
                return;
            }
            int Index = -1;

            for (int dex = 0; dex < m_AllWidgetView[this.BelongParent].Count; ++dex)
            {
                if (m_AllWidgetView[this.BelongParent][dex] == this)
                {
                    Index = dex;
                    break;
                }
            }

            if (Index == -1)
            {
                Debug.LogError("CloseWidget Fail,Not Exit " + this.name);
                return;
            }

            UIParameterArgs parameter1 = UIParameterArgs.Create(isDestroyWidget);

            this.HideWindow(Helper.Instance.MegerUIParameter(parameter1, parameter));
            if (isDestroyWidget)
            {
                m_AllWidgetView[this.BelongParent].RemoveAt(Index);
            }
        }
 private void CloseBtnClick()
 {
     HideWindow(UIParameterArgs.Create());
 }
        private void OnStartUpBtnClick()
        {
            if (AssetUpdateMgr.Instance.IsUpdateError)
            {
                Debug.LogError("无法启动游戏  资源更新失败");
                return;
            }


            //UIManager.Instance.ForceGetUIAsync<UILoginPopupView>(Define_ResPath.UILoginPopupViewPath, UIManagerHelper.Instance.PopupParentTrans, (loginPopView) =>
            //{
            //    UIManager.Instance.OpenPopUp(loginPopView, PopupOpenOperateEnum.KeepPreviousAvailable,this, true, null);
            //}, true, true);

            UIViewReference.Instance.UiLoginPopupView.OpenPopUp(PopupOpenOperateEnum.KeepPreviousAvailable, this, true, UIParameterArgs.Create());
        }
 /// <summary>
 /// 关闭一个弹窗界面
 /// </summary>
 /// <param name="view"></param>
 /// <param name="closeOperate"></param>
 public void ClosePopup(PopupCloseOperateEnum closeOperate)
 {
     this.HideWindow(UIParameterArgs.Create());
     m_AllRecordViewPopup.Remove(this);
     DealHidePopView(closeOperate);
 }
 /// <summary>
 /// 打开一个弹窗界面 (默认按照优先级打开 ,如果优先级不够则不会弹出)
 /// </summary>
 /// <param name="popupOperate"></param>
 public void OpenPopUp(bool isFailRecord = true)
 {
     OpenPopUp(PopupOpenOperateEnum.PriorityOrder, UIBasePageView.CurOpenPage, isFailRecord, UIParameterArgs.Create());
 }
 /// <summary>
 /// 打开一个弹窗界面 (属于当前页面的)
 /// </summary>
 /// <param name="popupOperate"></param>
 /// <param name="isFailRecord">如果是因为优先级而无法弹出 则表示是否需要记录 如果为false 则当无法显示时候不会自动弹出,而是隐藏了</param>
 public void OpenPopUp(PopupOpenOperateEnum popupOperate, bool isFailRecord = true)
 {
     OpenPopUp(popupOperate, UIBasePageView.CurOpenPage, isFailRecord, UIParameterArgs.Create());
 }