ProgressBar не меняет значение, остается 100%
Работаю в Godot 4.2.2. Я делаю Тамагочи, нужны были шкалы для голода, сна и гигиены. Сделала шкалу, хотела, чтобы каждые 5 секунд значение падало на 1. Но к сожалению, у меня не получается, просто так и остается 100%. Программа не пишет ошибок.
func _ready():
await get_tree().create_timer(5.0).timeout
$Golod.value -= 1
Ответы (1 шт):
Автор решения: Oyunsky
→ Ссылка
Ваш вариант кода, создает таймер, который срабатывает один раз (SceneTreeTimer). Для того, чтобы он срабатывал множество раз, нужно использовать Timer.
Есть 2 простых способа создать таймер.
- Создать объекта
Timer
внутри скрипта.
var counter: int = 0
func _ready() -> void:
var timer = Timer.new()
# Если значение равно `true` таймер автоматически запуститься, после создании сцены
timer.autostart = true
# Для ручного запуска таймера, используеться метод `start()`
# timer.start()
# И аналогично, для остановки таймера, метод `stop()`
# timer.stop()
# Время ожидания в секундах
timer.wait_time = 5.0
# Подключаем функцию, которая будет выполняться, после истечении времени таймера
# Параметр `timeout`, это название сигнала (константная)
timer.connect("timeout", decrease_counter)
func decrease_counter() -> void:
counter -= 1
В данном примере, таймер уменьшает значение переменного counter
на 1.
- Создать объекта
Timer
в редакторе сцен.
- Добавляем
Timer
в сцену и задаем параметры таймеру.
- Создаем скрипт для сцены.
- Подключаем сигнал
timeout
(сигналы находятся в окнеNode
) из объектаTimer
к скрипту.
- Пишем код, который будет выполнятся после истечении времени таймера.
func _on_timer_timeout() -> void:
pass # Заменить на функциональный код.