Timer

Hereda: Node < Object

Un temporizador de cuenta atrás.

Descripción

The Timer node is a countdown timer and is the simplest way to handle time-based logic in the engine. When a timer reaches the end of its wait_time, it will emit the timeout signal.

After a timer enters the scene tree, it can be manually started with start(). A timer node is also started automatically if autostart is true.

Without requiring much code, a timer node can be added and configured in the editor. The timeout signal it emits can also be connected through the Signals dock in the editor:

func _on_timer_timeout():
    print("Time to attack!")

Note: To create a one-shot timer without instantiating a node, use SceneTree.create_timer().

Note: Timers are affected by Engine.time_scale unless ignore_time_scale is true. The higher the time scale, the sooner timers will end. How often a timer processes may depend on the framerate or Engine.physics_ticks_per_second.

Tutoriales

Propiedades

bool

autostart

false

bool

ignore_time_scale

false

bool

one_shot

false

bool

paused

TimerProcessCallback

process_callback

1

float

time_left

float

wait_time

1.0

Métodos

bool

is_stopped() const

void

start(time_sec: float = -1)

void

stop()


Señales

timeout() 🔗

Emitida cuando el temporizador llega al final.


Enumeraciones

enum TimerProcessCallback: 🔗

TimerProcessCallback TIMER_PROCESS_PHYSICS = 0

Actualiza el temporizador en cada frame del proceso de física (véase Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).

TimerProcessCallback TIMER_PROCESS_IDLE = 1

Actualiza el temporizador en cada frame del proceso (renderizado) (ver Node.NOTIFICATION_INTERNAL_PROCESS).


Descripciones de Propiedades

bool autostart = false 🔗

  • void set_autostart(value: bool)

  • bool has_autostart()

If true, the timer will start immediately when it enters the scene tree.

Note: After the timer enters the tree, this property is automatically set to false.

Note: This property does nothing when the timer is running in the editor.


bool ignore_time_scale = false 🔗

  • void set_ignore_time_scale(value: bool)

  • bool is_ignoring_time_scale()

Si es true, el temporizador ignorará Engine.time_scale y se actualizará con el tiempo real transcurrido.


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool is_one_shot()

Si es true, el temporizador se detendrá después de alcanzar el final. De lo contrario, como por defecto, el temporizador se reiniciará automáticamente.


bool paused 🔗

  • void set_paused(value: bool)

  • bool is_paused()

Si es true, el temporizador se pausa. Un temporizador en pausa no se procesa hasta que esta propiedad se vuelve a establecer en false, incluso cuando se llama a start(). Véase también stop().


TimerProcessCallback process_callback = 1 🔗

Especifica cuándo se actualiza el temporizador durante el bucle principal.


float time_left 🔗

El tiempo restante del temporizador en segundos. Siempre es 0 si el temporizador está detenido.

Nota: Esta propiedad es de solo lectura y no se puede modificar. Se basa en wait_time.


float wait_time = 1.0 🔗

  • void set_wait_time(value: float)

  • float get_wait_time()

El tiempo requerido para que el temporizador termine, en segundos. Esta propiedad también se puede establecer cada vez que se llama a start().

Nota: Los temporizadores solo pueden procesarse una vez por frame de física o de proceso (dependiendo del process_callback). Una velocidad de fotogramas inestable puede causar que el temporizador termine de manera inconsistente, lo cual es especialmente notable si el tiempo de espera es menor a aproximadamente 0.05 segundos. Para temporizadores muy cortos, se recomienda escribir tu propio código en lugar de usar un nodo Timer. Los temporizadores también se ven afectados por Engine.time_scale.


Descripciones de Métodos

bool is_stopped() const 🔗

Devuelve true si el temporizador está detenido o no ha comenzado.


void start(time_sec: float = -1) 🔗

Inicia el temporizador, o reinicia el temporizador si ya se ha iniciado. Falla si el temporizador no está dentro del árbol de escenas. Si time_sec es mayor que 0, este valor se utiliza para wait_time.

Nota: Este método no reanuda un temporizador en pausa. Consulta paused.


void stop() 🔗

Detiene el temporizador. Véase también paused. A diferencia de start(), esto se puede llamar de forma segura si el temporizador no está dentro del árbol de escenas.

Nota: Llamar a stop() no emite la señal timeout, ya que no se considera que el temporizador se haya agotado. Si se desea, utiliza $Timer.timeout.emit() después de llamar a stop() para emitir manualmente la señal.