Timer
Відлік таймера.
Опис
Вузол Timer – це таймер зворотного відліку, і це найпростіший спосіб обробки логіки, що базується на часі, в движку. Коли таймер досягає кінця свого wait_time, він видає сигнал timeout.
Після того, як таймер потрапляє в дерево сцен, його можна запустити вручну за допомогою start(). Вузол таймера також запускається автоматично, якщо autostart має значення true.
Вузол таймера можна додати та налаштувати в редакторі без необхідності написання великої кількості коду. Сигнал timeout, який він видає, також можна підключити через док-станцію вузлів у редакторі:
func _on_timer_timeout():
print("Time to attack!")
Примітка: Щоб створити одноразовий таймер без створення екземпляра вузла, використовуйте 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.
Час, необхідний для таймера до кінця, за секундами. Ця властивість також може бути встановлена в будь-який час.
Примітка: Тимерси можуть обробляти тільки один раз на фізику або технологічну раму (в залежності від 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(), щоб вручну генерувати сигнал.