game-engine - 在 GD 脚本中将变量的名称作为字符串获取
问题描述
我一直在互联网上到处寻找解决方案,但在任何地方都看不到一个脚本,它可以让我在 Godot 3.1 中将变量的名称读取为字符串
我想做的事:
- 将路径名称保存为变量。
- 将路径变量的名称作为字符串与另一个字符串的值进行比较并打印路径值。
例如 -
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.
提前致谢!
解决方案
我认为您的方法对于您要完成的工作可能有点过于简单了。它基本上似乎可以解决if (array[apple]) == apple then apple
,但这并不能真正解决程序问题。似乎需要更多的复杂性。
首先,你可能有一个函数来返回你所有的图标名称,就像这样。
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
然后在 main 函数中返回类似这样的内容,在那里你有你现在关心的名字列表,对于每个名字,检查头像名称列表,如果你有匹配,重建路径并做其他工作:
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...
这就是我将在这里采取的方法,希望这有意义并有所帮助。
推荐阅读
- c++ - 围绕 new/delete 编写内存分析包装器的合适方法是什么?
- xml - 替换 xsl/xslt 中的值
- python - Numpy 连接错误 (np.concatenate)
- c# - 在 C# 中动态地从 JSON 中删除节点
- mysql - 如何使我的选择语句确定性地仅匹配我的数据集的 1/n?
- python - Copying and deleting files from google storage but getting python error as quote_from_bytes() expected bytes
- sql-server - 将一系列不同单引号的字符转换为nvarchar
- android-studio - Android 应用程序未执行。请帮我解决这个问题
- swiftui - 包含 Text SwiftUI 时让 VStack 缩小到 minWidth
- time-complexity - 2^1000 是常数函数或指数函数