在Unity中覆盖标准关闭按钮

时间:2016-10-17 08:58:19

标签: c# forms unity3d window

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

编辑:

@JsonTypeInfo(
  use = JsonTypeInfo.Id.NAME, 
  include = JsonTypeInfo.As.EXISTING_PROPERTY,
  property= "type",
  visible = true
)

我试过这个用户点击(X)按钮时打开一个对话框。它工作,但看起来它每帧都创建一个新的对话框。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

此问题需要更新的答案,因为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下终止。