在 GD 脚本中获取变量名称作为字符串

Getting the name of the variable as a string in GD Script

我一直在 Internet 上到处寻找解决方案,但在任何地方我都找不到一个脚本可以让我在 Godot 3.1 中以字符串形式读取变量的名称

我想做的事情:

  1. 将路径名保存为变量。
  2. 将路径变量的名称作为字符串与另一个字符串的值进行比较并打印路径值。

例如 -

var Apple = "mypath/folder/apple.png"
var myArray = ["Apple", "Pear"]

将变量名称作为字符串与字符串进行比较的函数 -

if (myArray[myposition] == **the required function that outputs variable name as String**(Apple) :
       print (Apple)  #this prints out the path.

提前致谢!

你不能只使用 str() 函数将任何数据类型转换为 stirng 吗?

var = str(var)

我认为您此处的方法对于您要实现的目标来说可能有点过于简单化了。它基本上似乎解决了 if (array[apple]) == apple then apple,这并没有真正解决程序问题。似乎需要更多的复杂性。

首先,您可能有一个函数 return 所有图标名称,类似这样。

func get_avatar_names():
    var avatar_names = []
    var folder_path = "res://my/path"
    var avatar_dir = Directory.new()
    avatar_dir.open(folder_path)
    avatar_dir.list_dir_begin(true, true)
    while true:
        var avatar_file = avatar_dir.get_next()
        if avatar_file == "":
            break
        else:
            var avatar_name = avatar_file.trim_suffix(".png")
            avatar_names.append(avatar_name)
    return avatar_names

然后像这样回到主函数,你有你现在关心的名字列表,对于每个名字,检查头像名称列表,如果有匹配,重建路径并做其他工作:

var some_names = ["Jim","Apple","Sally"]
var avatar_names = get_avatar_names()
for name in some_names:
    if avatar_names.has(name):
        var img_path = "res://my/path/" + name + ".png"
        # load images, additional work, etc...

这就是我在这里采用的方法,希望这有意义并有所帮助。