:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/4.2/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/4.2/doc/classes/Timer.xml. .. _class_Timer: Timer ===== **Inherits:** :ref:`Node` **<** :ref:`Object` A countdown timer. .. rst-class:: classref-introduction-group Description ----------- Counts down a specified interval and emits a signal on reaching 0. Can be set to repeat or "one-shot" mode. \ **Note:** Timers are affected by :ref:`Engine.time_scale`, a higher scale means quicker timeouts, and vice versa. \ **Note:** To create a one-shot timer without instantiating a node, use :ref:`SceneTree.create_timer`. .. rst-class:: classref-introduction-group Tutorials --------- - `2D Dodge The Creeps Demo `__ .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`autostart` | ``false`` | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`one_shot` | ``false`` | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`paused` | | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`TimerProcessCallback` | :ref:`process_callback` | ``1`` | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`float` | :ref:`time_left` | | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ | :ref:`float` | :ref:`wait_time` | ``1.0`` | +--------------------------------------------------------------+----------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-------------------------+------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_stopped` **(** **)** |const| | +-------------------------+------------------------------------------------------------------------------------------+ | void | :ref:`start` **(** :ref:`float` time_sec=-1 **)** | +-------------------------+------------------------------------------------------------------------------------------+ | void | :ref:`stop` **(** **)** | +-------------------------+------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Signals ------- .. _class_Timer_signal_timeout: .. rst-class:: classref-signal **timeout** **(** **)** Emitted when the timer reaches 0. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumerations ------------ .. _enum_Timer_TimerProcessCallback: .. rst-class:: classref-enumeration enum **TimerProcessCallback**: .. _class_Timer_constant_TIMER_PROCESS_PHYSICS: .. rst-class:: classref-enumeration-constant :ref:`TimerProcessCallback` **TIMER_PROCESS_PHYSICS** = ``0`` Update the timer during physics frames (see :ref:`Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS`). .. _class_Timer_constant_TIMER_PROCESS_IDLE: .. rst-class:: classref-enumeration-constant :ref:`TimerProcessCallback` **TIMER_PROCESS_IDLE** = ``1`` Update the timer during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_Timer_property_autostart: .. rst-class:: classref-property :ref:`bool` **autostart** = ``false`` .. rst-class:: classref-property-setget - void **set_autostart** **(** :ref:`bool` value **)** - :ref:`bool` **has_autostart** **(** **)** If ``true``, the timer will automatically start when entering the scene tree. \ **Note:** This property is automatically set to ``false`` after the timer enters the scene tree and starts. .. rst-class:: classref-item-separator ---- .. _class_Timer_property_one_shot: .. rst-class:: classref-property :ref:`bool` **one_shot** = ``false`` .. rst-class:: classref-property-setget - void **set_one_shot** **(** :ref:`bool` value **)** - :ref:`bool` **is_one_shot** **(** **)** If ``true``, the timer will stop when reaching 0. If ``false``, it will restart. .. rst-class:: classref-item-separator ---- .. _class_Timer_property_paused: .. rst-class:: classref-property :ref:`bool` **paused** .. rst-class:: classref-property-setget - void **set_paused** **(** :ref:`bool` value **)** - :ref:`bool` **is_paused** **(** **)** If ``true``, the timer is paused and will not process until it is unpaused again, even if :ref:`start` is called. .. rst-class:: classref-item-separator ---- .. _class_Timer_property_process_callback: .. rst-class:: classref-property :ref:`TimerProcessCallback` **process_callback** = ``1`` .. rst-class:: classref-property-setget - void **set_timer_process_callback** **(** :ref:`TimerProcessCallback` value **)** - :ref:`TimerProcessCallback` **get_timer_process_callback** **(** **)** Processing callback. See :ref:`TimerProcessCallback`. .. rst-class:: classref-item-separator ---- .. _class_Timer_property_time_left: .. rst-class:: classref-property :ref:`float` **time_left** .. rst-class:: classref-property-setget - :ref:`float` **get_time_left** **(** **)** The timer's remaining time in seconds. Returns 0 if the timer is inactive. \ **Note:** This value is read-only and cannot be set. It is based on :ref:`wait_time`, which can be set using :ref:`start`. .. rst-class:: classref-item-separator ---- .. _class_Timer_property_wait_time: .. rst-class:: classref-property :ref:`float` **wait_time** = ``1.0`` .. rst-class:: classref-property-setget - void **set_wait_time** **(** :ref:`float` value **)** - :ref:`float` **get_wait_time** **(** **)** The wait time in seconds. \ **Note:** Timers can only emit once per rendered frame at most (or once per physics frame if :ref:`process_callback` is :ref:`TIMER_PROCESS_PHYSICS`). This means very low wait times (lower than 0.05 seconds) will behave in significantly different ways depending on the rendered framerate. For very low wait times, it is recommended to use a process loop in a script instead of using a Timer node. Timers are affected by :ref:`Engine.time_scale`, a higher scale means quicker timeouts, and vice versa. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_Timer_method_is_stopped: .. rst-class:: classref-method :ref:`bool` **is_stopped** **(** **)** |const| Returns ``true`` if the timer is stopped. .. rst-class:: classref-item-separator ---- .. _class_Timer_method_start: .. rst-class:: classref-method void **start** **(** :ref:`float` time_sec=-1 **)** Starts the timer. Sets :ref:`wait_time` to ``time_sec`` if ``time_sec > 0``. This also resets the remaining time to :ref:`wait_time`. \ **Note:** This method will not resume a paused timer. See :ref:`paused`. .. rst-class:: classref-item-separator ---- .. _class_Timer_method_stop: .. rst-class:: classref-method void **stop** **(** **)** Stops the timer. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`