Я работаю над пользовательским интерфейсом для игры Tower Defense в клубе разработчиков видеоигр моего университета с использованием Godot.У меня есть код для перетаскивания башен из меню на доску, но он не работает должным образом.Я проверил его в отдельном файле, и он отлично работает, но как только я запускаю его в реальной программе, в которой есть револьверы в GridContainer, он перестает работать.В настоящее время каждая турель представляет собой TextureRect, каждый из которых является дочерним элементом GridContainer, который сам является дочерним элементом другого TextureRect, являющегося фоном.Наконец, корнем сцены является MarginContainer.
Вот код.Это просто официальная демонстрация перетаскивания, но измененная для TextureRects.
extends TextureRect
func get_drag_data(pos):
var prev = TextureRect.new()
prev.texture = texture
prev.rect_size = Vector2(50,50)
set_drag_preview(prev)
return texture
func can_drop_data(pos, data):
return true
func drop_data(pos, data):
texture = data
Итак, мой вопрос, как я могу заставить перетаскивать объекты, когда перетаскиваемые объекты находятся в контейнере?Я мог бы сделать это без контейнеров, но, похоже, это приведет к плохому дизайну пользовательского интерфейса, поэтому я бы предпочел не делать этого.