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 può anche essere collegato tramite il pannello Nodo 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 scena.
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.