如何在 Godot 中将字符串转换为枚举?

How to convert a string to enum in Godot?

使用 Godot 3.4,我将枚举设置为:

enum {
    STRENGTH, DEXTERITY, CONSTITUTION, INTELLIGENCE, WISDOM, CHARISMA
}

而且我希望能够使字符串“STRENGTH”return 成为枚举值 (0)。我希望下面的代码打印数组中的第一项,但是它当前显示一个错误,指出 STRENGTH 是一个无效的获取索引。

boost = "STRENGTH"
print(array[boost])

我是不是做错了什么,或者是否有一个函数可以将字符串转换为可以识别为枚举的东西?

首先,您的枚举需要一个名称。没有名字,枚举只是一种制作一系列常量的奇特方式。出于此答案的目的,我将使用 MyEnum,如下所示:

enum MyEnum {
    STRENGTH, DEXTERITY, CONSTITUTION, INTELLIGENCE, WISDOM, CHARISMA
}

现在,我们可以引用枚举并询问它的元素。特别是,我们可以找出与这样的名称关联的值是什么:

    var boost = "DEXTERITY"
    print("Value of ", boost, ": ", MyEnum.get(boost))

应该打印:

Value of DEXTERITY: 1

顺便说一句,如果你想从值中获取名称,你可以这样做:

    var value = MyEnum.DEXTERITY
    print("Name of ", value, ": ", MyEnum.keys()[value])

应该打印:

Name of 1: DEXTERITY

您得到的只是一个带有枚举内容的普通字典预设。所以,我们可以询问它所有的值:

    for boost in MyEnum:
        print(boost)

将打印:

STRENGTH
DEXTERITY
CONSTITUTION
INTELLIGENCE
WISDOM
CHARISMA

我们也可以问它是否有特定的,例如 print(MyEnum.has("ENDURANCE")) 打印 False.

是的,您可以编辑字典。它只是一个用枚举值初始化的字典。