Перетаскивание не работает в контейнере сетки в Годо 3 - PullRequest
0 голосов
/ 26 октября 2018

Я работаю над пользовательским интерфейсом для игры 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

Итак, мой вопрос, как я могу заставить перетаскивать объекты, когда перетаскиваемые объекты находятся в контейнере?Я мог бы сделать это без контейнеров, но, похоже, это приведет к плохому дизайну пользовательского интерфейса, поэтому я бы предпочел не делать этого.

...