GDScript如何将PropertyUsageFlags数值转换为标志列表?
解决方法
原生枚举PropertyUsageFlags是引擎内置类型,不支持自定义枚举的values()、find_key()这类字典式方法,你可以用Godot的反射API动态获取枚举信息,不用手动维护枚举副本,代码修改如下:
func get_usage_flags(prop : Dictionary): var usage : int = prop.usage var flags = [] # 获取PropertyUsageFlags的所有常量名 var enum_constants = Engine.get_enum_constants("PropertyUsageFlags") for constant_name in enum_constants: # 获取常量对应的数值 var flag_value = GDScript.global_get(constant_name) # 按位与判断是否包含该标志 if usage & flag_value: flags.append(constant_name) return " | ".join(flags)
说明
Engine.get_enum_constants("PropertyUsageFlags")会返回该枚举所有常量的名称列表(比如["PROPERTY_USAGE_DEFAULT", "PROPERTY_USAGE_EDITOR"]等)GDScript.global_get(constant_name)可以获取全局枚举常量对应的整数值- 这种方式完全依赖引擎内置API,Godot版本更新时枚举有变动也能自动适配,不用手动修改代码
内容的提问来源于stack exchange,提问作者user17158575
相关产品推荐
相关产品推荐

