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...
Timer
Un timer per il conto alla rovescia.
Descrizione
Il nodo Timer è un timer per il conto alla rovescia ed è il modo più semplice per gestire logica basata sul tempo nel motore. Quando un timer raggiunge la fine del suo wait_time, emetterà il segnale timeout.
Dopo che un timer entra nell'albero di scene, lo si può avviare manualmente con start(). Inoltre, un nodo timer viene avviato automaticamente se autostart è true.
Senza richiedere molto codice, un nodo timer può essere aggiunto e configurato nell'editor. Il segnale timeout che emette si può anche connettere attraverso il pannello Segnali nell'editor:
func _on_timer_timeout():
print("È ora di attaccare!")
Nota: Per creare un timer a colpo singolo senza istanziare un nodo, usa SceneTree.create_timer().
Nota: I timer sono influenzati da Engine.time_scale a meno che ignore_time_scale non sia true. Più alta è la scala temporale, prima scadranno i timer. La frequenza con cui un timer elabora può dipendere dal frame rate o da Engine.physics_ticks_per_second.
Tutorial
Proprietà
|
||
|
||
|
||
|
||
|
Metodi
is_stopped() const |
|
void |
|
void |
stop() |
Segnali
timeout() 🔗
Emesso quando il timer raggiunge la fine.
Enumerazioni
enum TimerProcessCallback: 🔗
TimerProcessCallback TIMER_PROCESS_PHYSICS = 0
Aggiorna il timer a ogni frame di processo di fisica (vedi Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
TimerProcessCallback TIMER_PROCESS_IDLE = 1
Aggiorna il timer a ogni frame di processo (renderizzato) (vedi Node.NOTIFICATION_INTERNAL_PROCESS).
Descrizioni delle proprietà
Se true, il timer si avvierà immediatamente quando entra nell'albero di scene.
Nota: Dopo che il timer entra nell'albero, questa proprietà viene automaticamente impostata su false.
Nota: Questa proprietà non fa nulla quando il timer è in esecuzione nell'editor.
bool ignore_time_scale = false 🔗
Se true, il timer ignorerà Engine.time_scale e si aggiornerà con il tempo realmente trascorso.
Se true, il timer si fermerà dopo aver raggiunto la fine. Altrimenti, come impostazione predefinita, il timer si riavvierà automaticamente.
Se true, il timer è in pausa. Un timer in pausa non elabora finché questa proprietà non viene reimpostata su false, anche quando viene chiamato start(). Vedi anche stop().
TimerProcessCallback process_callback = 1 🔗
void set_timer_process_callback(value: TimerProcessCallback)
TimerProcessCallback get_timer_process_callback()
Specifica quando il timer è aggiornato durante il ciclo principale.
float get_time_left()
Il tempo rimanente del timer in secondi. È sempre 0 se il timer è fermo.
Nota: Questa proprietà è di sola lettura e non può essere modificata. Si basa su wait_time.
Il tempo richiesto per allo scadere del timer, in secondi. Questa proprietà può anche essere impostata ogni volta che viene chiamato start().
Nota: I timer possono elaborare solo una volta per frame di fisica o di processo (a seconda del process_callback). Un framerate instabile può causare la fine incoerente del timer, il che è particolarmente evidente se il tempo di attesa è inferiore a circa 0.05 secondi. Per timer molto brevi, si consiglia di scrivere il proprio codice invece di utilizzare un nodo Timer. I timer sono inoltre influenzati da Engine.time_scale.
Descrizioni dei metodi
Restituisce true se il timer è fermato o non è iniziato.
void start(time_sec: float = -1) 🔗
Avvia il timer, o reimposta il timer se è già stato avviato. Fallisce se il timer non è all'interno dell'albero di scene. Se time_sec è maggiore di 0, questo valore viene usato per wait_time.
Nota: Questo metodo non riprende un timer in pausa. Vedi paused.
void stop() 🔗
Arresta il timer. Vedi anche paused. A differenza di start(), è possibile chiamare questa funzione in sicurezza anche se il timer non si trova nell'albero di scene.
Nota: Chiamare stop() non emette il segnale timeout, poiché il timer non è considerato scaduto. Se ciò si desidera, utilizzare $Timer.timeout.emit() dopo aver chiamato stop() per emettere manualmente il segnale.