/// <summary> /// 关闭窗口栈栈顶的窗口 /// </summary> /// <param name="windows"></param> private void PopWindow() { if (windows.Count == 0) { return; } Window window = windows[windows.Count - 1]; if (!window.isRoot) { //弹出栈顶窗口 windows.RemoveAt(windows.Count - 1); window.Hide(); //加入UI缓存 if (!cacheUIs.ContainsKey(window.uiPath)) { cacheUIs.Add(window.uiPath, new CacheUI(window.uiPath, window.uiGameObject, true)); window.uiGameObject.transform.SetParent(cacheRoot, false); } else { GameObject.Destroy(window.uiGameObject); } window.Destroy(); DeleteWindow(window); //显示当前栈顶窗口 if (windows.Count > 0) { windows[windows.Count - 1].Show(); } } else { //弹出提示退出游戏的界面 MessageWindowArgs args = new MessageWindowArgs(); args.btnNumber = 2; args.messageText = "确认退出游戏"; args.onOkClicked = () => { Application.Quit(); }; LoadWindow <MessageWindow>(args); } }
public override void Init() { base.Init(); msgWindowArgs = args as MessageWindowArgs; if (msgWindowArgs == null) { msgWindowArgs = new MessageWindowArgs(); } okBtn = uiTransform.Find("ButtonOK").gameObject; cancelBtn = uiTransform.Find("ButtonCaccel").gameObject; ok2Btn = uiTransform.Find("ButtonOK2").gameObject; msgText = uiTransform.Find("TextMessage").gameObject; UIUtility.SetText(msgText, msgWindowArgs.messageText); if (msgWindowArgs.btnNumber == 2) { ok2Btn.SetActive(false); okBtn.SetActive(true); cancelBtn.SetActive(true); UIUtility.RegisterClickedEvent( okBtn, () => { WindowManager.Instance.GoBack(); if (msgWindowArgs.onOkClicked != null) { msgWindowArgs.onOkClicked(); } }); UIUtility.RegisterClickedEvent( cancelBtn, () => { WindowManager.Instance.GoBack(); if (msgWindowArgs.onCancelClicked != null) { msgWindowArgs.onCancelClicked(); } }); } else { ok2Btn.SetActive(true); okBtn.SetActive(false); cancelBtn.SetActive(false); UIUtility.RegisterClickedEvent( ok2Btn, () => { if (msgWindowArgs.onOkClicked != null) { msgWindowArgs.onOkClicked(); } WindowManager.Instance.GoBack(); }); } }