It's possible to restart a Timer at any time, even when it is already running. See this code for instance (it should be attached to a Node that has a Timer as a child):
extends Node
onready var Timer = $Timer
func _ready():
yield(get_tree().create_timer(2.0), "timeout")
# The line below will run after the "timeout" signal is emitted by the SceneTreeTimer
Timer.start()
func _process(delta):
print(Timer.time_left)
The timer will run for 2 seconds then it will be restarted once. Every frame, the timer's value is printed to standard output. (If you don't know what yield()
does, see Coroutines with yield
in the Godot documentation.)