重写Unity中的标准关闭按钮
本文关键字:标准 关闭按钮 Unity 重写 | 更新日期: 2023-09-27 18:13:18
我想创建一个当用户点击窗口关闭按钮时"Are you sure?"的系统。有可能在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)按钮时打开一个对话框。它工作,但看起来它创建一个新的对话框每帧。
这个问题需要一个更新的答案,因为application . cancelquit()已被弃用,并且MonoBehaviour.OnApplicationQuit()不能阻止应用程序关闭。
要完成此退出确认方法,最好使用:Application.wantsToQuit.
From the docs:
当播放器应用程序想要退出时,Unity会引发此事件。
为该事件添加一个事件处理程序,以接收应用程序试图退出的通知。
当引发此事件时,退出进程已经启动,但可以取消。这意味着玩家并不一定会退出游戏。关于保证退出事件,请查看application .quit .
返回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操作系统下的终止
看看MonoBehaviour.OnApplicationQuit()和Application.CancelQuit()