Timer
Обратный таймер.
Описание
Узел Timer — это таймер обратного отсчета, представляющий собой простейший способ обработки временной логики в движке. Когда таймер достигает конца своего wait_time, он испускает сигнал timeout.
После добавления таймера в дерево сцены его можно запустить вручную с помощью start(). Узел таймера также запускается автоматически, если autostart имеет значение true.
Без большого количества кода узел таймера можно добавить и настроить в редакторе. Сигнал timeout, который он испускает, также можно подключить через панель сигналов в редакторе:
func _on_timer_timeout():
print("Пора атаковать!")
Примечание: Чтобы создать одноразовый таймер без создания экземпляра узла, используйте SceneTree.create_timer().
Примечание: Таймеры зависят от Engine.time_scale, если только ignore_time_scale не имеет значения true. Чем выше временной масштаб, тем быстрее закончатся таймеры. Частота обработки таймера может зависеть от частоты кадров или Engine.physics_ticks_per_second.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
Методы
is_stopped() const |
|
void |
|
void |
stop() |
Сигналы
timeout() 🔗
Издается, когда таймер достигает конца.
Перечисления
enum TimerProcessCallback: 🔗
TimerProcessCallback TIMER_PROCESS_PHYSICS = 0
Обновлять таймер каждый кадр физического процесса (см. Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
TimerProcessCallback TIMER_PROCESS_IDLE = 1
Обновлять таймер каждый обработанный (отрисованный) кадр (см. Node.NOTIFICATION_INTERNAL_PROCESS).
Описания свойств
Если true, таймер запустится немедленно при входе в дерево сцены.
Примечание: После того, как таймер входит в дерево, это свойство автоматически устанавливается в false.
Примечание: Это свойство ничего не делает, когда таймер работает в редакторе.
bool ignore_time_scale = false 🔗
Если true, таймер проигнорирует Engine.time_scale и обновит значение реального прошедшего времени.
Если true, таймер остановится после достижения конца. В противном случае, как и по умолчанию, таймер автоматически перезапустится.
Если true, таймер приостанавливается. Приостановленный таймер не будет выполняться, пока это свойство не будет возвращено к значению false, даже при вызове start(). См. также stop().
TimerProcessCallback process_callback = 1 🔗
void set_timer_process_callback(value: TimerProcessCallback)
TimerProcessCallback get_timer_process_callback()
Указывает, когда обновляется таймер во время основного цикла.
float get_time_left()
Оставшееся время таймера в секундах. Это всегда 0, если таймер остановлен.
Примечание: Это свойство доступно только для чтения и не может быть изменено. Оно основано на wait_time.
Время, необходимое для завершения таймера, в секундах. Это свойство также можно устанавливать каждый раз при вызове start().
Примечание: Таймеры могут обрабатываться только один раз на физический или процессный кадр (в зависимости от process_callback). Нестабильная частота кадров может привести к неравномерному завершению таймера, что особенно заметно, если время ожидания меньше примерно 0.05 секунд. Для очень коротких таймеров рекомендуется писать собственный код вместо использования узла Timer. На таймеры также влияет Engine.time_scale.
Описания метода
Возвращает true, если таймер остановлен или не запущен.
void start(time_sec: float = -1) 🔗
Запускает таймер или сбрасывает его, если он уже был запущен. Завершается сбоем, если таймер не находится внутри дерева сцены. Если time_sec больше 0, это значение используется для wait_time.
Примечание: Этот метод не возобновляет приостановленный таймер. См. paused.
void stop() 🔗
Останавливает таймер. См. также paused. В отличие от start(), этот метод можно безопасно вызывать, если таймер не находится внутри дерева сцены.
Примечание: Вызов stop() не генерирует сигнал timeout, поскольку считается, что таймер не истёк. Если это необходимо, используйте $Timer.timeout.emit() после вызова stop(), чтобы вручную сгенерировать сигнал.