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

在開發移動應用程式時, 除非使用者在主螢幕上, 否則不需要退出, 因此處理方式有變化.

值得注意的是, 預設情況下, 在請求退出時,Godot應用程式具有退出的內建行為, 可以更改為:

get_tree().set_auto_accept_quit(false)

Godot 通知

雖然強迫應用程式關閉可以通過呼叫 SceneTree.quit 來完成,但這樣做不會發送退出的*通知*。這意味著上面描述的函式不會被呼叫。通過呼叫 SceneTree.quit 來退出,將不允許自訂動作的完成(比如保存、確認退出或除錯),即使你試圖延遲強制退出的行。

相反,如果您想通知場景樹中的節點即將到來的程式終止,您應該自己發送通知:

get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)

發送此通知將通知所有節點有關程式終止的信息,但不會終止程式本身*與 3.X 中不同*。為了實作前面的行為,應該在通知後呼叫 SceneTree.quit <class_SceneTree_method_quit>` 。