Godot C# 获取拖拽至窗口的文件路径

背景

解决一个小工具时遇到的问题解决过程

使用技术

  • 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);
        }
    }
}

效果:
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值