/// <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> /// 移除最上层所有面板 /// </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(); } }