处理退出请求
大多数平台都有要求应用程序退出的选项。在桌面系统中,通常是通过窗口标题栏上的❌
图标来实现的。在 Android 系统上,当在主屏幕上时,后退按钮被用来退出,否则就返回。
处理通知
在桌面平台上, MainLoop
有一个特殊的 MainLoop.NOTIFICATION_WM_QUIT_REQUEST
通知, 当请求退出时, 会向所有节点发送。节点的处理方法如下:
func _notification(what):
if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
get_tree().quit() # default behavior
在Android
系统中, 会发送 MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST
代替. 如果在项目设置中勾选了 应用程序 > 配置 > 返回时退出 (默认选项), 按Back
按钮将退出应用程序。
caution
MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST
在iOS上不支持, 因为iOS设备没有实体的Back
按钮.
在开发移动应用程序时, 除非用户在主屏幕上, 否则不需要退出, 因此处理方式有变化。值得注意的是,默认情况下,在请求退出时,应用程序具有退出的内置行为, 可以更改为:
get_tree().set_auto_accept_quit(false)
自定义退出通知
虽然强迫应用程序关闭可以通过调用 SceneTree.quit()
来完成,但这样做不会发送退出的通知。这意味着上面描述的函数不会被调用。通过调用 SceneTree.quit
来退出,将不允许自定义动作的完成(比如保存、确认退出或调试)。
相反,您应该发送退出请求:
get_tree().notification(MainLoop.NOTIFICATION_WM_QUIT_REQUEST)