我正在使用 Godot 为我大学的视频游戏开发俱乐部开发一款塔防游戏的 UI。我有代码可以将塔从菜单拖到板上,但它不能正常工作。我已经在一个单独的文件中对其进行了测试,它工作正常,但是一旦我在实际程序中运行它,它在 GridContainer 中有炮塔,它就会停止工作。当前每个炮塔都是一个TextureRect,它们都是GridContainer的子级,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
所以我的问题是,当被拖动的东西在容器中时,我怎样才能使拖放工作?我可以在没有容器的情况下做到这一点,但这听起来会导致一些糟糕的 UI 设计,所以我真的不想这样做。