Timer

Успадковує: Node < Object

Відлік таймера.

Опис

Вузол 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.

Посібники

Властивості

bool

autostart

false

bool

ignore_time_scale

false

bool

one_shot

false

bool

paused

TimerProcessCallback

process_callback

1

float

time_left

float

wait_time

1.0

Методи

bool

is_stopped() const

void

start(time_sec: float = -1)

void

stop()


Сигнали

timeout() 🔗

Випробувано, коли таймер досягає кінця.


Переліки

enum TimerProcessCallback: 🔗

TimerProcessCallback TIMER_PROCESS_PHYSICS = 0

Оновлювати таймер у кожному кадрі фізичного процесу (див. Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).

TimerProcessCallback TIMER_PROCESS_IDLE = 1

Оновлювати таймер кожного кадру процесу (рендера) (див. Node.NOTIFICATION_INTERNAL_PROCESS).


Описи властивостей

bool autostart = false 🔗

  • void set_autostart(value: bool)

  • bool has_autostart()

Якщо true, таймер запуститься одразу після входу в дерево сцен.

**Примітка: ** Після того, як таймер увійде в дерево, для цієї властивості автоматично встановлюється значення false.

Примітка: Ця властивість нічого не робить, коли таймер запущено в редакторі.


bool ignore_time_scale = false 🔗

  • void set_ignore_time_scale(value: bool)

  • bool is_ignoring_time_scale()

Якщо true, таймер ігноруватиме Engine.time_scale і оновлюватиме реальний час, що минув.


bool one_shot = false 🔗

  • void set_one_shot(value: bool)

  • bool is_one_shot()

Якщо true, таймер зупиниться після досягнення кінця. В іншому випадку, як за замовчуванням, таймер автоматично перезавантажить.


bool paused 🔗

  • void set_paused(value: bool)

  • bool is_paused()

Якщо значення true, таймер призупиняється. Призупинений таймер не обробляється, доки ця властивість не буде знову встановлена на значення false, навіть коли викликається метод start(). Див. також stop().


TimerProcessCallback process_callback = 1 🔗

Визначає, коли таймер оновлюється під час основного циклу.


float time_left 🔗

Час прибуття таймера за секундами. Це завжди 0, якщо таймер припиняється.

Примітка: Ця властивість не може бути змінена. На основі wait_time.


float wait_time = 1.0 🔗

  • void set_wait_time(value: float)

  • float get_wait_time()

Час, необхідний для таймера до кінця, за секундами. Ця властивість також може бути встановлена в будь-який час.

Примітка: Тимерси можуть обробляти тільки один раз на фізику або технологічну раму (в залежності від process_callback). Нестабільний каркас може призвести до того, що таймер до кінця невідповідно, що особливо помітно, якщо час очікування нижче, ніж грубо 0.05 секунди. Для дуже коротких таймерів рекомендується писати власний код замість використання вузла Timer. Тимерси також впливають на Engine.time_scale.


Описи методів

bool is_stopped() const 🔗

Повернення true, якщо таймер припиняється або не почався.


void start(time_sec: float = -1) 🔗

Запускає таймер або скидає його, якщо він вже був запущений. Не вдається виконати дію, якщо таймер не знаходиться всередині дерева сцен. Якщо time_sec більше за 0, це значення використовується для wait_time.

Примітка: Цей метод не відновлює призупинений таймер. Див. paused.


void stop() 🔗

Зупиняє таймер. Див. також paused. На відміну від start(), цей метод можна безпечно викликати, якщо таймер не знаходиться всередині дерева сцен.

Примітка: Виклик stop() не генерує сигнал timeout, оскільки вважається, що таймер не вичерпав час очікування. Якщо це потрібно, використовуйте $Timer.timeout.emit() після виклику stop(), щоб вручну генерувати сигнал.