Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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(), чтобы вручную сгенерировать сигнал.