gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:25:07 32 4
gpt4 key购买 nike

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

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

关于 enums 的 Godot 文档表示查找值应该像时尚一样在字典中工作。但是,尝试访问 Error[error_value]错误:

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

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

最佳答案

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

enum {TILE_BRICK, TILE_FLOOR, TILE_SPIKE, TILE_TELEPORT}
# Is the same as:
const TILE_BRICK = 0
const TILE_FLOOR = 1
const TILE_SPIKE = 2
const TILE_TELEPORT = 3

但是,这些常量的标识符名称只是为了让人类更容易阅读代码而存在。它们在运行时被机器可以使用的东西替换,并且以后无法访问。如果我想打印标识符的名称,我必须手动执行:
# 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.
这以自己的方式很有用,但即使在这种情况下,我们也假设手头已经有了与标识符名称显式匹配的字符串,这意味着我们也可以像第一个示例一样手动打印该字符串。

关于enums - 如何在Godot中将全局枚举值转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61984338/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com