public void CloseUI(UIPanelBase uiPanel) { if (uiPanel.GetType().IsSubclassOf(typeof(UIWindow))) { UIWindow tempWnd = windowsStack.Peek(); Debug.Log(tempWnd.name); if (!(uiPanel as UIWindow).isMain && tempWnd == uiPanel) { tempWnd = windowsStack.Pop(); tempWnd.OnDispose(); Destroy(tempWnd.gameObject); tempWnd = windowsStack.Peek(); tempWnd.gameObject.SetActive(true); tempWnd.OnShow(); } else { Debug.LogError("要关闭的界面不是栈顶元素或是栈底元素"); } } else if (uiPanel.GetType().IsSubclassOf(typeof(UIDialog))) { UIDialog tempDlg = dialogsStack.Peek(); Debug.Log(tempDlg.gameObject.name + " " + uiPanel.gameObject.name); if (tempDlg == uiPanel) { tempDlg = dialogsStack.Pop(); tempDlg.OnDispose(); Destroy(tempDlg.gameObject); if (dialogsStack.Count > 0) { tempDlg = dialogsStack.Peek(); tempDlg.OnShow(); } } else { Debug.LogError("要关闭的界面不是栈顶元素"); } } else { Debug.LogError("关闭的UI類型有問題,請檢測類型"); } }