会尽力变得更加简洁和清晰。
制作游戏时,虽然我确实使用拖放功能,但我想将其放在“面板”上,然后将其添加到同一面板中的列表中。嗯,它实际上已经起作用了。但不太好。
问题来了,我只能把它扔到那个“小组”没有他的孩子的地方。所以在该面板上的空白处。我希望它出现在整个列表中,无论是否为空。
因此尝试在
children_has_point()
运行时执行 can_drop_data()
进行检查,但似乎问题的全部根源是因为如果可拖动对象位于子对象上方,则 can_drop_data()
不会触发。
因此尝试尝试使用父级的 mouse_filter
进行操作,它似乎也不会影响 can_drop_data()
。
那么我该怎么做才能修复/使其按照我想要的方式工作?
(顺便说一句,我知道解决方案之一是在整个列表面板的顶部创建一个 Rect2 或类似的东西,让
can_drop_data()
知道它可以放在整个列表上,但这似乎做起来更麻烦,试图看看它们是否不是更好的解决方案?)
我希望这不是太混乱和不清楚的问题,可能不是,但我尽力了。最后一行问题也会被删除。
顺便说一句,我知道解决方案之一是在整个列表面板的顶部创建一个 Rect2 或类似的东西,让 can_drop_data() 知道它可以放在整个列表上
拥有一个
Control
(例如 Panel
)并不一定会很麻烦,特别是:您不必按需创建它,而是可以始终将其保留在那里,并将其置于顶部或推送它到底部。
我认为问题在于孩子们正在接受鼠标输入。在这种情况下,将
mouse_filter
设置为 MOUSE_FILTER_PASS
(因此,如果它们不处理它传播到父级的输入)或 MOUSE_FILTER_IGNORE
(因此它们不接受任何鼠标输入)就足够了。
但是,如果始终使用该设置会导致其他问题,则必须考虑在运行时更改它们。我建议将运行时需要修改的
Control
添加到节点组中,以使代码更简单。