Enums 如何在Godot中将全局枚举值转换为字符串?

Enums 如何在Godot中将全局枚举值转换为字符串?,enums,godot,Enums,Godot,“GlobalScope”类定义了许多基本枚举,如枚举 我试图在发生错误时生成有意义的日志。但是,打印类型为Error的值只打印整数,这没有多大帮助 上的Godot文档表明,查找值应该以类似于字典的方式进行。但是,尝试访问错误[Error\u value]错误时,会出现以下情况: The identifier "Error" isn't declared in the current scope. 如何将此类枚举值转换为字符串?在您引用的文档中,它解释了枚举基本上只是创建一组常量: 然而,这些

“GlobalScope”类定义了许多基本枚举,如枚举

我试图在发生错误时生成有意义的日志。但是,打印类型为
Error
的值只打印整数,这没有多大帮助

上的Godot文档表明,查找值应该以类似于字典的方式进行。但是,尝试访问
错误[Error\u value]
错误时,会出现以下情况:

The identifier "Error" isn't declared in the current scope.

如何将此类枚举值转换为字符串?

在您引用的文档中,它解释了枚举基本上只是创建一组常量:

然而,这些常量的标识符名称的存在只是为了使人类更容易阅读代码。它们在运行时被替换为机器可以使用的东西,以后无法访问。如果要打印标识符的名称,我必须手动执行此操作:

# Manually print TILE_FLOOR's name as a string, then its value.
print("The value of TILE_FLOOR is ", TILE_FLOOR)
因此,如果您的目标是获得描述性错误输出,那么您应该以类似的方式进行,可能类似于:

if unexpected_bug_found:
    # Manually print the error description, then actually return the value.
    print("ERR_BUG: There was a unexpected bug!")
    return ERR_BUG

现在与字典的关系是,字典可以像枚举一样工作,而不是相反。枚举被限制为带有整数赋值的标识符列表,字典也可以这样做。但它们也可以做其他很酷的事情,比如有字符串标识符,我相信你可能已经想到了:

const MyDict = {
    NORMAL_KEY = 0,
    'STRING_KEY' : 1, # uses a colon instead of equals sign
}
func _ready():
    print("MyDict.NORMAL_KEY is ",    MyDict.NORMAL_KEY)    # valid
    print("MyDict.STRING_KEY is ",    MyDict.STRING_KEY)    # valid
    print("MyDict[NORMAL_KEY] is ",   MyDict[NORMAL_KEY])   # INVALID
    print("MyDict['STRING_KEY'] is ", MyDict['STRING_KEY']) # valid
    # Dictionary['KEY'] only works if the key is a string.
这本身就很有用,但即使在这种情况下,我们假设已经有了与标识符名称显式匹配的字符串,这意味着我们也可以像第一个示例中那样手动打印该字符串

const MyDict = {
    NORMAL_KEY = 0,
    'STRING_KEY' : 1, # uses a colon instead of equals sign
}
func _ready():
    print("MyDict.NORMAL_KEY is ",    MyDict.NORMAL_KEY)    # valid
    print("MyDict.STRING_KEY is ",    MyDict.STRING_KEY)    # valid
    print("MyDict[NORMAL_KEY] is ",   MyDict[NORMAL_KEY])   # INVALID
    print("MyDict['STRING_KEY'] is ", MyDict['STRING_KEY']) # valid
    # Dictionary['KEY'] only works if the key is a string.