Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Godot, помогите с кодом

Егор Чоч Ученик (103), на голосовании 1 неделю назад
из-за этого кода у меня перестали функционировать кнопки, что делать ( могу дать весь код или прикрепить скрины)
func _on_shop_pressed() -> void:

if not is_shop_visible:
_shop_instance = shopin.instantiate()
get_tree().get_root().add_child(_shop_instance)
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("SlideIn")
is_shop_visible = true
else:
_animation_player.stop() # Stop the first animation
get_tree().get_root().remove_child(_shop_instance)
_shop_instance = shopout.instantiate()
get_tree().get_root().add_child(_shop_instance)
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("shopout")
is_shop_visible = false
$store.play()
Голосование за лучший ответ
ришааа Знаток (254) 1 месяц назад
 func _on_shop_pressed() -> void:   

if not is_shop_visible:
_shop_instance = shopin.instantiate()
get_tree().get_root().add_child(_shop_instance)
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("SlideIn")
is_shop_visible = true
else:
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("shopout")
is_shop_visible = false
yield(_animation_player, "animation_finished")
get_tree().get_root().remove_child(_shop_instance)
$store.play()
Егор ЧочУченик (103) 1 месяц назад
мне выдает ошибку - Строка 279:"yield" was removed in Godot 4. Use "await" instead.
Строка 279:Expected statement, found "(" instead.
Spore Просветленный (22258) 1 месяц назад
А точки с запятой в конце алгоритма не надо?
** Эгоист ** Знаток (483) 1 месяц назад
Возможно, проблема связана с тем, что после выполнения анимации или добавления/удаления узлов кнопки становятся недоступными для нажатия.
Вот некоторые шаги, которые вы можете предпринять:
Проверьте, что кнопки находятся выше других узлов: Убедитесь, что ваши кнопки не перекрываются узлами, которые вы добавляете (например, _shop_instance). Это может произойти, если новая панель магазина перекрывает кнопки.
Используйте add_child корректно: Когда вы добавляете _shop_instance, убедитесь, что он добавляется в нужный родительский узел. Возможно, лучше добавлять его в текущую сцену вместо корневого узла:

get_tree().current_scene.add_child(_shop_instance)

Проверка видимости узлов: Убедитесь, что после добавления или удаления узлов, все узлы, включая кнопки, остаются видимыми и активными. Иногда анимации могут влиять на их состояние.
Используйте call_deferred: Если вы работаете с анимациями и хотите убедиться, что кнопки могут быть нажаты после анимации, вы можете использовать call_deferred:

func _on_shop_pressed() -> void:
if not is_shop_visible:
_shop_instance = shopin.instantiate()
get_tree().current_scene.add_child(_shop_instance)
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("SlideIn")
is_shop_visible = true
else:
_animation_player.stop() # Stop the first animation
get_tree().current_scene.remove_child(_shop_instance)
_shop_instance = shopout.instantiate()
get_tree().current_scene.add_child(_shop_instance)
_animation_player = _shop_instance.get_node("AnimationPlayer")
_animation_player.play("shopout")
is_shop_visible = false
$store.play()

Проверка ошибок: Обратите внимание на ошибки в консоли Godot. Они могут дать подсказки о том, что происходит неправильно.
Если ни один из этих шагов не помог, вы можете предоставить больше информации о том, как устроены ваши узлы и кнопки, или прикрепить дополнительные куски кода, чтобы я мог помочь более конкретно.
Егор ЧочУченик (103) 1 месяц назад
твой код не работает
Похожие вопросы