背景
解决一个小工具时遇到的问题解决过程
使用技术
- Godot 4.2
- C#
问题发生
前提
bilibili - 【Godot】实现拖拽文件到游戏窗口并加载内容
上述视频通过Control节点的GetTree()
来链接files_dropped
信号,但我使用的是Godot4.2,在SenceTree
下并没有files_dropped
这个信号了;
解决问题
1、Godot4之后files_dropped
这个信号被移动到了ViewPort下了;
2、files_dropped
接收的是一个PackedStringArray的紧凑数组,GD和C#在使用这个API的时候有显著不同,GD里面的PackedStringArray
等价于C#的string[]
,具体可参考下面文档的【紧缩数组】部分。
代码如下:
using Godot;
public partial class UploadPlace : Control
{
public override void _Ready()
{
GetViewport().Connect("files_dropped", new Callable(this, "GetFilesPath"));
}
public void GetFilesPath(string[] filesPath)
{
foreach (var VARIABLE in filesPath)
{
GD.Print(VARIABLE);
}
}
}
效果: