private void HideView(UIData view) { if (view == null) { return; } UIViewBase baseView = view.gameObject.GetComponent <UIViewBase>(); view.gameObject.SetActive(false); if (baseView != null) { baseView.OnClose(); } }
/// <summary> /// 关闭View /// </summary> /// <param name="name"></param> public void CloseView(string name, bool wakeUp = true) { if (m_UIDataMap.ContainsKey(name)) { UIData m_UIData = m_UIDataMap[name]; m_UIData.gameObject.SetActive(false); UIViewBase baseView = m_UIDataMap[name].gameObject.GetComponent <UIViewBase>(); if (baseView != null) { baseView.OnClose(); } switch (m_UIData.viewStyle) { case UIViewStyle.Page: case UIViewStyle.Window: m_StackPage.Remove(m_UIData); if (m_StackPage.Count > 0) { if (wakeUp) { ActiveView(m_StackPage[m_StackPage.Count - 1], m_UIData.viewStyle == UIViewStyle.Page); } m_topPage = m_StackPage[m_StackPage.Count - 1].name; m_topViewData = m_StackPage[m_StackPage.Count - 1]; } else { m_topPage = null; m_topViewData = null; } break; case UIViewStyle.OverView: m_StackOverView.Remove(m_UIData); if (m_StackOverView.Count > 0) { m_topOverView = m_StackOverView[m_StackOverView.Count - 1].name; } else { m_topOverView = null; } break; } m_UIData.hidenOverView.Clear(); } }
public void ReplaceView(string name, Intent intent = null) { if (m_topPage != name && m_UIDataMap.ContainsKey(m_topPage)) { UIData m_UIData = m_UIDataMap[m_topPage]; m_UIData.gameObject.SetActive(false); UIViewBase baseView = m_UIData.gameObject.GetComponent <UIViewBase>(); if (baseView == null) { Debugger.Error(name + " need UIViewBase!"); return; } baseView.OnClose(); foreach (var item in m_UIData.hidenOverView) { ActiveView(item); } OpenView(name, intent); } }
public void PageBack(string toPage = "", bool wakeUp = true) { if (toPage == "") { if (TopView.viewStyle == UIViewStyle.Window) { TopView.gameObject.SetActive(false); UIViewBase baseView = TopView.gameObject.GetComponent <UIViewBase>(); if (baseView != null) { baseView.OnClose(); } m_StackPage.Remove(TopView); App.Manager.ObjectPool.Release(TopView.name, TopView.gameObject); if (m_StackPage.Count > 0) { if (wakeUp) { ActiveView(m_StackPage[m_StackPage.Count - 1], false); } m_topPage = m_StackPage[m_StackPage.Count - 1].name; m_topViewData = m_StackPage[m_StackPage.Count - 1]; } else { m_topPage = null; m_topViewData = null; } } else { UIData m_UIData = m_UIDataMap[m_topPage]; CloseView(m_topPage, wakeUp); //恢复之前隐藏状态 m_UIData = m_UIDataMap[m_topPage]; if (wakeUp) { for (int i = m_StackOverView.Count - 1; i >= 0; i--) { if (m_UIData.hidenOverView.IndexOf(m_StackOverView[i]) == -1) { Debugger.Log("active:" + m_StackOverView[i].name); ActiveView(m_StackOverView[i]); } else if (m_StackOverView[i].gameObject.activeSelf) { Debugger.Log("hide:" + m_StackOverView[i].name); HideView(m_StackOverView[i]); } } } } } else { for (int i = m_StackPage.Count - 1; i >= 0; i--) { if (m_StackPage[i].name == toPage) { for (int j = 2; j < m_StackPage.Count - i; j++) { PageBack("", false); } PageBack(); break; } } } }