Types 如何检测存储在数组中的任何类型的变量-Godot?

Types 如何检测存储在数组中的任何类型的变量-Godot?,types,godot,gdscript,Types,Godot,Gdscript,我有一个包含节点和字符串的数组。在通过循环传递时,我想根据所读取对象的类型调用某些函数。我尝试执行以下操作来测试该类型- if to_fry_array[fry_looper].is_class("Node2D"): to_fry_array[fry_looper].show() else: print (to_fry_array[fry_looper]) 当在数组中读取字符串到\u fry\u数组时,该代码抛出错误。错误- 无效呼叫。基“String”中不存在函数“is_cl

我有一个包含节点和字符串的数组。在通过循环传递时,我想根据所读取对象的类型调用某些函数。我尝试执行以下操作来测试该类型-

if to_fry_array[fry_looper].is_class("Node2D"):
    to_fry_array[fry_looper].show()
else:
    print (to_fry_array[fry_looper])
当在数组
中读取字符串到\u fry\u数组
时,该代码抛出错误。错误-

无效呼叫。基“String”中不存在函数“is_class”


如何修改此代码,使其对所有类型的对象/变量都具有通用性?

并不是每种类型都有方法
是\u class
,但幸运的是,您可以使用运算符
typeof
来实现所需

if typeof(obj) == TYPE_OBJECT and obj.is_class("Node2D"):
    print("Node2D: ", obj)
elif typeof(x) == TYPE_STRING:
    print("String: ", obj)
在你的特殊情况下:

if typeof(to_fry_array[fry_looper]) == TYPE_OBJECT and \
          to_fry_array[fry_looper].is_class("Node2D"):
    to_fry_array[fry_looper].show()
else:
    print (to_fry_array[fry_looper])
函数是GoDot 3.0中引入的

如果未识别该函数,则可能您使用的是旧版本

我建议使用get_class()或typeof()函数作为替代

研究链接:


我使用的是Godot3.0。该函数适用于“节点”类,但不适用于“字符串”。get_class()将不起作用并抛出错误。我会检查typeof()谢谢,这真的很有帮助!