我正在使用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设计不好,所以我宁愿不这样做。