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...
Gestire richieste di chiusura
Smettere
La maggior parte delle piattaforme offre la possibilità di richiedere la chiusura dell'applicazione. Sui computer desktop, avviene solitamente tramite l'icona "x" nella barra del titolo della finestra. Sui dispositivi mobili, l'app si può chiudere in qualsiasi momento mentre è sospesa in background.
Gestire la notifica
Sulle piattaforme desktop e web, Node riceve una notifica speciale NOTIFICATION_WM_CLOSE_REQUEST quando viene richiesta la chiusura dal gestore di finestre.
Per gestire la notifica si fa così (su qualsiasi nodo):
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
}
}
È importante notare che, di norma, le applicazioni Godot si chiudono automaticamente quando viene richiesto di farlo dal gestore delle finestre. Questo si può modificare, così che l'utente possa prendersi cura dell'intera procedura di chiusura:
get_tree().set_auto_accept_quit(false)
GetTree().AutoAcceptQuit = false;
Su dispositivi mobili
Non esiste un equivalente diretto di NOTIFICATION_WM_CLOSE_REQUEST sulle piattaforme mobili. A causa la natura dei sistemi operativi mobili, l'unico momento in cui è possibile eseguire codice prima della chiusura è quando l'applicazione viene sospesa in background. Sia su Android sia su iOS, l'app può essere terminata in qualsiasi momento mentre è sospesa, sia dall'utente sia dal sistema operativo. Un modo per anticiparlo è utilizzare NOTIFICATION_APPLICATION_PAUSED per effettuare qualunque azione sia necessaria mentre l'app viene sospesa.
Nota
Su iOS, hai solo circa 5 secondi per completare un'attività avviata da questo segnale. Se superi questo tempo limite, iOS terminerà l'applicazione anziché metterla in pausa.
Su Android, premendo il pulsante Indietro si esce dall'applicazione se l'opzione Applicazione > Configurazione > Chiudi con il pulsante "Indietro" è selezionata nelle Impostazioni del progetto (che è il valore predefinito). Ciò attiverà NOTIFICATION_WM_GO_BACK_REQUEST.
Inviare la propria notifica di chiusura
Sebbene sia possibile forzare l'applicazione a chiudersi chiamando SceneTree.quit, facendolo così non verrà inviata la notifica NOTIFICATION_WM_CLOSE_REQUEST ai nodi nell'albero di scene. Uscire chiamando SceneTree.quit non permetterà di completare azioni personalizzate (come salvare, confermare l'uscita o il debug), nemmeno tentando di ritardare la riga che forza l'uscita.
Se invece desideri notificare ai nodi nell'albero di scene l'imminente terminazione del programma, dovresti inviare personalmente la notifica:
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
GetTree().Root.PropagateNotification((int)NotificationWMCloseRequest);
L'invio di questa notifica informerà tutti i nodi della terminazione del programma, ma non terminerà il programma stesso a differenza di Godot 3.X. Per ottenere il comportamento precedente, bisogna chiamare SceneTree.quit dopo la notifica.