コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
    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();
            });
        }
    }