/// <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]);//入栈 }
/// <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(); } }