如何检测存储在数组中的任何类型的变量 - 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() 函数作为替代。
研究链接:
我有一个包含节点和字符串的数组。在通过循环传递它时,我想根据正在读取的对象类型调用某些函数。我尝试执行以下操作来测试类型 -
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() 函数作为替代。
研究链接: