public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1) { base.Show(_request, _listener, id); UITipMessageBox previous = null; if (CheckExitAndShowing(this, out previous)) { //There is one Tipe Exit if (previous != null) { if (previous.gameObject.activeSelf) { previous.Hide(); } else { allUITipMessageBoxList.Remove(previous); if (MessageBox.MsgBoxPool != null) { MessageBox.MsgBoxPool.Recycle(previous, MessageBoxResquest.MessageType.TipsBox, (tips) => { tips.Reset(); }); } } }//if } allUITipMessageBoxList.Add(this); if (gameObject.activeSelf == false) { gameObject.SetActive(true); } if (_request == null) { Hide(); return; } ; m_TopCanvasTrans.SetParent(_request.m_Parent); //父节点 m_TopCanvasTrans.localScale = _request.m_Scale; //缩放 m_TopCanvasTrans.localPosition = _request.m_WorldPosition; //要显示的位置 m_TopCanvasTrans.localEulerAngles = _request.m_Angle; //要显示的位置 if (_request.m_DispearTime >= 0) { StartCoroutine(AutoHide(_request.m_DispearTime)); } ShowMsg(); }
//Find if this object already show one tipMsg static bool CheckExitAndShowing(UITipMessageBox current, out UITipMessageBox _previous) { for (int _dex = 0; _dex < allUITipMessageBoxList.Count; ++_dex) { if (allUITipMessageBoxList[_dex].gameObject != null) { if (allUITipMessageBoxList[_dex] != null && allUITipMessageBoxList[_dex].request != null && allUITipMessageBoxList[_dex]. request.m_Parent == current.request.m_Parent) { _previous = allUITipMessageBoxList[_dex]; return(true); }//if } } _previous = null; return(false); }
///// <summary> ///// 所有的模态系统弹框的注册事件 注册前需要检测 CanPopModelMessageBox ///// </summary> ///// <param name="_msgBox"></param> ///// <param name="_isShow">是打开还是关闭</param> //public void ModelMessageBoxRegest(BaseMessageBox _msgBox, bool _isShow) //{ // if (_isShow) // { // allModelMSGBox.Add(_msgBox); // UIManagerModel.GetInstance().ForbiddenUI(true); //禁用UI // } // else // { // allModelMSGBox.Remove(_msgBox); // GameObject.Destroy(_msgBox.gameObject); //销毁 // if (allModelMSGBox.Count < 1) // { // UIManagerModel.GetInstance().ForbiddenUI(false); //禁用UI // } // else // { // Debug.Log("还有" + allModelMSGBox.Count + "个没有处理"); // } // } //} ///// <summary> ///// 检测是否可以弹出模态框 ///// </summary> ///// <param name="_box"></param> ///// <param name="hideSameLevel">是否隐藏相同层显示当前层</param> ///// <returns></returns> //public bool CanPopModelMessageBox(MessageBoxLevel level, bool hideSameLevel) //{ // for (int _index = 0; _index < allModelMSGBox.Count; _index++) // { // if (hideSameLevel) // { //隐藏同级别的 // if (allModelMSGBox[_index].GetBoxLevel() == level) // { // allModelMSGBox[_index].Hide(); //隐藏同级别的 // } // else if (allModelMSGBox[_index].GetBoxLevel() > level) // { //有更高级别的弹框 // return false; // } // } // else // { // if (allModelMSGBox[_index].GetBoxLevel() >= level) // { // return false; //有相同级别或者更高的其他模态框 // } // }//esle // } // return true; //} #region 场景切换 /切换账号 void OnSceneChange(string _newSecneName) { UITipMessageBox.ClearAllTips(); }