Godot. Переменная получает 'null' при повторном запуске игры(f6). При первом запуске все работает корректно
Читал документацию по godot и повторял оттуда примеры. И возникла сложность на этапе изучения использования сигналов(https://docs.godotengine.org/ru/4.x/getting_started/step_by_step/signals.html). Скрипт писал на GDScript. При запуске игры дебагер мне показывает ошибку "invalid get index 'timeout' (on base:'null instance')". Хотя все сделано абсолютно идентично примеру из документации, возникает такая сложность. И что самое странное, когда я захожу в другой проект, потом снова перехожу в этот и включаю игру, все работает, спрайт исчезает каждую секунду. Но когда я не выхожу из проекта и перезапускаю его, вылезает такая ошибка. Подскажите с чем связано? Не хочется идти дальше не разобравшись). Скрин сцен и файлов прилагаю
extends Sprite2D
var speed = 400
var angular_speed = PI
func _ready():
var timer = get_node("Timer")
timer.timeout.connect(_on_timer_timeout)
func _process(delta):
rotation += angular_speed * delta
var velocity = Vector2.UP.rotated(rotation) * speed
position += velocity * delta
func _on_button_pressed():
set_process(not is_processing())
func _on_timer_timeout():
visible = not visible
Ответы (1 шт):
Нода Sprite2D
создан как отдельная сцена, нода Timer
находится в Node2D
, при запуске Node2D
- код находит Timer
, но если запустить Sprite2D
как отдельную сцену код не находит Timer
.
Есть 2 решения:
- Переместить
Timer
непосредственно на сценуSprite2D
, - Не делать из ветки
Sprite2D
отдельную сцену.