/// <summary> /// 从当前层移除一个面板 /// </summary> /// <param name="panelType"></param> public void RemovePanel(PanelType panelType) { Debug.Log($"移除了一个{panelType}面板"); if (TryGetPanel(panelType, out BasePanel panel)) { PanelStack.Peek().Remove(panel); panel.OnExit(); } }
/// <summary> /// 在当前层添加一个面板 /// </summary> /// <param name="panelType"></param> public void AddPanel(PanelType panelType) { if (PanelStack.Any()) { if (TryGetPanel(panelType, out BasePanel panel)) { PanelStack.Peek().Add(panel); panel.OnEnter(); } } }
/// <summary> /// 显示最顶部的UI面板 /// </summary> public void ShowPanel() { var UIPanel = PanelStack.Peek(); if (UIPanel.Panel_Type == PanelType.Subclass) { if (!PanelStack.Contains(UIPanel)) { PanelStack.Push(UIPanel); } TakePanelToTop(UIPanel); } }
/// <summary> /// 移除最上层所有面板 /// </summary> public void PopPanel() { if (PanelStack.Any()) { foreach (var panel in PanelStack.Pop()) { panel.OnExit(); } if (PanelStack.Any()) { foreach (var panel in PanelStack.Peek()) { panel.OnResume(); } } } }
/// <summary> /// 推入一个面板并置于新的一层 /// </summary> /// <param name="panelType"></param> public void PushPanel(PanelType panelType) { if (TryGetPanel(panelType, out BasePanel panel)) { //将当前层隐藏,再推入新的一层 if (PanelStack.Any()) { foreach (var item in PanelStack.Peek()) { item.OnPause(); } } PanelStack.Push(new HashSet <BasePanel> { panel }); panel.OnEnter(); } }