示例#1
0
 /// <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();
         }
     }
 }
示例#2
0
        /// <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();
                    }
                }
            }
        }
示例#3
0
        /// <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();
            }
        }