如何在 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
.
是的,您可以编辑字典。它只是一个用枚举值初始化的字典。
使用 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
.
是的,您可以编辑字典。它只是一个用枚举值初始化的字典。