【问题标题】:Overriding standart close button in Unity覆盖 Unity 中的标准关闭按钮
【发布时间】:2016-10-17 08:58:18
【问题描述】:

我想创建一个“你确定吗?”当用户单击窗口的关闭按钮时系统。是否可以在 Unity 中捕获 FormClosing 事件?
谢谢。

编辑:

void OnApplicationQuit()
{
    DialogResult result = MessageBox.Show(
        "Are you sure you want to cancel ?",
        "Question",
        MessageBoxButtons.YesNo,
        MessageBoxIcon.Question);
    if (result == DialogResult.Yes)
    {
        Application.Quit();
    }
}

我尝试在用户单击 (X) 按钮时打开一个对话框。它可以工作,但是看起来它每帧都会创建一个新对话框。

【问题讨论】:

    标签: c# forms unity3d window


    【解决方案1】:

    此问题需要更新答案,因为 Application.CancelQuit() 已弃用,MonoBehaviour.OnApplicationQuit() 不会阻止应用程序关闭。

    要完成这种退出确认方法,最好使用:Application.wantsToQuit

    来自文档:

    当播放器应用程序想要退出时,Unity 会引发此事件。

    向此事件添加事件处理程序以接收应用程序正在尝试退出的通知。

    引发此事件时,退出过程已开始,但可以取消。这意味着玩家不能保证退出。对于有保证的退出事件,请查看 Application.quitting。

    返回 true,退出过程将继续。返回false,退出过程将取消。


    示例:

    // When the application starts, append a method
    // that will run when the user attempts to exit
    [RuntimeInitializeOnLoadMethod]
    static void RunOnStart() { 
        Application.wantsToQuit += WantsToQuit;
    }
    
    public static bool quitConfirmation = false;
    
    static bool WantsToQuit() {
        if(quitConfirmation)  {
            return true;
        } else {
             RequestQuitConfirmation();
        }
        return false;
    }
    
    static void RequestQuitConfirmation() {
        DialogResult result = MessageBox.Show(
            "Are you sure you want to cancel ?",
            "Question",
            MessageBoxButtons.YesNo,
            MessageBoxIcon.Question);
        if (result == DialogResult.Yes)
        {
            quitConfirmation = true;
            Application.Quit();
        }
    }
    


    注意:在编辑器中退出播放模式时会忽略此事件(Application.wantsToQuit)的返回值。 重要提示:退货对 iPhone 没有影响。在 iPhone OS 下应用程序无法阻止终止。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 谢谢。我在错误的方向寻找答案。无需覆盖标准按钮。 Unity 已经做到了:)
      猜你喜欢
      • 2010-12-12
      • 2012-03-21
      • 2012-12-17
      • 2011-11-06
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多