Example #1
0
 /// <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();
     }
 }
Example #2
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();
         }
     }
 }
Example #3
0
    /// <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);
        }
    }
Example #4
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();
                    }
                }
            }
        }
Example #5
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();
            }
        }