Beendigungsanfragen bearbeiten

Beenden

Die meisten Plattformen haben die Möglichkeit, die Anwendung zum Beenden aufzufordern. Auf Desktops erfolgt dies normalerweise mit dem "x" Symbol in der Titelleiste des Fensters. Unter Android wird die Zurück-Taste zum beenden verwendet, wenn man auf dem Hauptbildschirm ist (oder ansonsten zurückzukehren).

Bearbeitung der Benachrichtigung

Auf Desktop-Plattformen verfügt die MainLoop über eine spezielle MainLoop.NOTIFICATION_WM_QUIT_REQUEST-Benachrichtigung, die bei einer Beendigungsanforderung an alle Nodes gesendet wird.

Unter Android wird stattdessen MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST gesendet. Durch Drücken der Zurück-Taste wird die Anwendung beendet, wenn in den Projekteinstellungen Anwendung> Konfiguration> Bei Zurück beenden aktiviert ist (Standardeinstellung).

Bemerkung

MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST wird unter iOS nicht unterstützt, da iOS-Geräte keine physische Zurück-Schaltfläche haben.

Die Behandlung der Benachrichtigung erfolgt wie folgt (bei jedem Node):

func _notification(what):
    if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
        get_tree().quit() # default behavior

Bei der Entwicklung mobiler Apps ist das Beenden nur dann erwünscht, wenn sich der Benutzer auf dem Hauptbildschirm befindet, sodass das Verhalten geändert werden kann.

Es ist wichtig zu beachten, dass Godot-Apps standardmäßig das eingebaute Verhalten haben sich bei einer Beendigungsanforderung zu beenden. Dies kann geändert werden:

get_tree().set_auto_accept_quit(false)

Sending your own quit notification

While forcing the application to close can be done by calling SceneTree.quit, doing so will not send the quit notification. This means the function described above won't be called. Quitting by calling SceneTree.quit will not allow custom actions to complete (such as saving, confirming the quit, or debugging), even if you try to delay the line that forces the quit.

Stattdessen sollten Sie eine Aufforderung zum Beenden senden:

get_tree().notification(MainLoop.NOTIFICATION_WM_QUIT_REQUEST)