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

时间:2019-12-28 23:16:51

标签: 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])

在数组to_fry_array中读取字符串时,代码将引发错误。错误-

  

无效的通话。基础'字符串'中不存在的函数'is_class'。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

GoDot 3.0中引入了

is_class()函数

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

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

研究链接:

相关问题