Пример #1
0
    /// <summary>
    /// 打开面板
    /// </summary>
    /// <param name="panelName">Panel name.</param>
    public void OpenUIPanel <T>() where T : new()
    {
        string panelName = typeof(T).ToString();

        /*
         * if (uiPanelCtrl.ContainsKey(panelName))
         * {
         *  //uiPanelCtrl[panelName].OpenPanel();
         * }
         * else{
         *  Debug.LogError("没有这个面板");
         *  //通过字符串 创建对象,然后再去尝试打开
         *  //有必要这样做吗?
         *  //或者是把类传过来,上面的判断还是可以把类转成字符串判断,但是这样好吗?增加了耦合?
         *  //优化方案:打开时候不卡顿,那就提前new就好了,因为第一次打开是创建,优化就是事先创建,就不会卡顿了
         *  new T();
         * }
         */

        if (!uiPanelCtrl.ContainsKey(panelName))
        {
            new T();
        }

        uiPanelCtrl[panelName].OpenPanel();
        if (uiCtrlStack.Count > 0)
        {
            //上个界面关掉
            BaseUICtrl peakCtrl = uiCtrlStack.Peek();
            peakCtrl.ClosePanel();
        }
        uiCtrlStack.Push(uiPanelCtrl[panelName]);//入栈
    }
Пример #2
0
 /// <summary>
 /// 面板回退
 /// </summary>
 public void BackUIPanel()
 {
     Debug.Log(uiCtrlStack.Count);
     if (uiCtrlStack.Count > 1)
     {
         BaseUICtrl peakCtrl = uiCtrlStack.Peek();
         peakCtrl.ClosePanel();
         uiCtrlStack.Pop();
         peakCtrl = uiCtrlStack.Peek();
         peakCtrl.OpenPanel();
     }
 }