Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
處理退出請求¶
退出¶
大多數平臺都有要求應用程式退出的選項。在桌面系統中,這通常是通過視窗標題列上的“x”圖示來實作的。在 Android 系統上,當在主螢幕上時,後退按鈕被用來退出(否則就返回)。
處理通知¶
在桌面平臺上, MainLoop 有一個特殊的 MainLoop.NOTIFICATION_WM_QUIT_REQUEST
通知, 當請求退出時, 會向所有節點發送.
在Android系統中, 會發送 MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST
代替. 如果在專案設定中勾選了 Application > Config > Quit On Go Back (預設), 按Back按鈕將退出應用程式.
備註
MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST
在iOS上不支援, 因為iOS裝置沒有實體的Back按鈕.
處理通知的方法如下(在任何節點上):
func _notification(what):
if what == NOTIFICATION_WM_CLOSE_REQUEST:
get_tree().quit() # default behavior
public override void _Notification(int what)
{
if (what == NotificationWMCloseRequest)
GetTree().Quit(); // default behavior
}
在開發移動應用程式時, 除非使用者在主螢幕上, 否則不需要退出, 因此處理方式有變化.
值得注意的是, 預設情況下, 在請求退出時,Godot應用程式具有退出的內建行為, 可以更改為:
get_tree().set_auto_accept_quit(false)
GetTree().AutoAcceptQuit = false;
Godot 通知¶
雖然強迫應用程式關閉可以通過呼叫 SceneTree.quit 來完成,但這樣做不會發送退出的*通知*。這意味著上面描述的函式不會被呼叫。通過呼叫 SceneTree.quit 來退出,將不允許自訂動作的完成(比如保存、確認退出或除錯),即使你試圖延遲強制退出的行。
相反,如果您想通知場景樹中的節點即將到來的程式終止,您應該自己發送通知:
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
GetTree().Root.PropagateNotification((int)NotificationWMCloseRequest);
發送此通知將通知所有節點有關程式終止的信息,但不會終止程式本身*與 3.X 中不同*。為了實作前面的行為,應該在通知後呼叫 SceneTree.quit <class_SceneTree_method_quit>` 。