Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Zpracování požadavků na ukončení
Ukončení
Většina platforem má možnost požádat o ukončení aplikace. Na počítačích se to obvykle provádí pomocí ikony "x" v záhlaví okna. Na mobilních zařízeních lze aplikaci ukončit, kdykoli je pozastavena na pozadí.
Zpracování notifikace
Na desktopových a webových platformách obdrží Node speciální upozornění NOTIFICATION_WM_CLOSE_REQUEST ("notifikace správce oken o požadavku na ukončení"), když správce oken požaduje ukončení.
Zpracování oznámení se provádí následovně (na libovolném uzlu):
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
}
}
Je důležité poznamenat, že ve výchozím nastavení mají všechny aplikace Godotu vestavěné chování pro ukončení, když o ukončení požádá správce oken. Toto lze změnit, aby se uživatel mohl postarat o kompletní postup ukončení:
get_tree().set_auto_accept_quit(false)
GetTree().AutoAcceptQuit = false;
Na mobilních zařízeních
Na mobilních platformách neexistuje žádný přímý ekvivalent k NOTIFICATION_WM_CLOSE_REQUEST. Vzhledem k povaze mobilních operačních systémů je jediný moment, ve kterém můžete spustit kód před ukončením, když je aplikace pozastavena na pozadí. V systémech Android i iOS může být aplikace kdykoli pozastavena uživatelem nebo operačním systémem. Připravit se na tuto možnost dopředu můžete využitím NOTIFICATION_APPLICATION_PAUSED ("notifikace o pozastavení aplikace") k provedení všech potřebných akcí, když je aplikace pozastavena.
Poznámka
V systému iOS máte na dokončení úkolu zahájeného tímto signálem pouze přibližně 5 sekund. Pokud tuto dobu překročíte, iOS aplikaci místo pozastavení ukončí.
V systému Android stisknutí tlačítka Zpět aplikaci ukončí, pokud je v Nastavení projektu zaškrtnuto Aplikace > Konfigurace > Ukončit při Zpět (což je výchozí nastavení). Tím se spustí NOTIFICATION_WM_GO_BACK_REQUEST ("notifikace správce oken o požadavku jít zpět").
Odeslání vlastního oznámení o ukončení
I když můžete ukončení aplikace vynutit zavoláním SceneTree.quit ("ukončit"), toto do uzlů ve stromu scény neodešle NOTIFICATION_WM_CLOSE_REQUEST. Ukončení voláním SceneTree.quit tak neumožní dokončení vlastních akcí (jako je uložení, potvrzení ukončení nebo ladění), i když se pokusíte provedení řádku, který ukončení vynutí, zpoždit.
Namísto toho, chcete-li uzly ve stromu scén upozornit na nadcházející ukončení programu, měli byste upozornění odeslat sami:
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
GetTree().Root.PropagateNotification((int)NotificationWMCloseRequest);
Odeslání tohoto upozornění informuje všechny uzly o ukončení programu. Samotný program ale na rozdíl od verzí 3.X neukončí. Pro dosažení předchozího chování by měla být po upozornění zavolána SceneTree.quit.