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

How to detect any type of variable that is stored in an array - Godot?

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

if to_fry_array[fry_looper].is_class("Node2D"):
    to_fry_array[fry_looper].show()
else:
    print (to_fry_array[fry_looper])

当读取数组 to_fry_array 中的字符串时,代码会引发错误。错误 -

Invalid call. Nonexistent function 'is_class' in base 'String'.

如何修改此代码,使其对所有类型的 objects/variables 通用?

并非每种类型都有方法 is_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])

is_class()函数在GoDot 3.0

中引入

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

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

研究链接: