Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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 (ansonsten geht man zurück).

Bearbeitung der Benachrichtigung

Auf Desktop- und Web-Plattformen erhält Node eine spezielle NOTIFICATION_WM_CLOSE_REQUEST-Benachrichtigung, wenn das Beenden vom Window-Manager angefordert wird.

Unter Android wird stattdessen NOTIFICATION_WM_GO_BACK_REQUEST gesendet. Durch Drücken des "Zurück"-Buttons wird die Anwendung beendet, wenn Anwendung > Konfiguration > Beenden bei Zurückgehen in den Projekteinstellungen aktiviert ist (dies ist der Default).

Bemerkung

Die Funktion NOTIFICATION_WM_GO_BACK_REQUEST wird unter iOS nicht unterstützt, da iOS-Geräte keinen physischen Zurück-Button haben.

Die Benachrichtigung wird wie folgt gehandhabt (auf jedem Node):

func _notification(what):
    if what == NOTIFICATION_WM_CLOSE_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-Anwendungen standardmäßig so eingestellt sind, dass sie beendet werden, wenn der Fenstermanager das Beenden anfordert. Dies kann geändert werden, so dass der Benutzer den gesamten Beendigungsvorgang selbst durchführen kann:

get_tree().set_auto_accept_quit(false)

Senden einer eigenen Beenden-Benachrichtigung

Während das Beenden der Anwendung durch den Aufruf von SceneTree.quit erzwungen werden kann, wird dadurch die NOTIFICATION_WM_CLOSE_REQUEST nicht an die Nodes im Szenenbaum gesendet. Das Beenden durch den Aufruf von SceneTree.quit lässt keine benutzerdefinierten Aktionen zu (wie z.B. Speichern, Bestätigen des Beendens oder Debuggen), selbst wenn Sie versuchen, die Zeile, die das Beenden erzwingt, zu verzögern.

Wenn Sie stattdessen die Nodes im Szenenbaum über den bevorstehenden Programmabbruch benachrichtigen wollen, sollten Sie die Benachrichtigung selbst senden:

get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)

Das Senden dieser Benachrichtigung informiert alle Nodes über die Beendigung des Programms, beendet aber nicht das Programm selbst, anders als in 3.X. Um das vorherige Verhalten zu erreichen, sollte SceneTree.quit nach der Benachrichtigung aufgerufen werden.