using System.Collections.Generic; using UnityEngine; public class UIManager { int _order = 0; Stack _popupStack = new Stack(); public T ShowPopupUI(string name = null) where T : UI_Popup { if (string.IsNullOrEmpty(name)) { name = typeof(T).Name; } GameObject go = Managers.Resource.Instantiate($"UI/Popup/{name}"); T popup = Util.GetOrAddComponent(go); _popupStack.Push(popup); return popup; } public void ClosePopupUI(UI_Popup popup) { if (_popupStack.Count == 0) { return; } if (_popupStack.Peek() != popup) { Debug.Log("Close Popup Failed!"); return; } ClosePopupUI(); } public void ClosePopupUI() { if (_popupStack.Count == 0) { return; } UI_Popup popup = _popupStack.Pop(); Managers.Resource.Destroy(popup.gameObject); popup = null; _order--; } public void CloseAllPopupUI() { while (_popupStack.Count > 0) { ClosePopupUI(); } } }