【问题标题】:How to convert a string to enum in Godot?如何在Godot中将字符串转换为枚举?
【发布时间】:2022-01-10 14:04:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: enums godot gdscript


    【解决方案1】:

    首先,您的枚举需要一个名称。没有名称,枚举只是制作一系列常量的一种奇特方式。出于此答案的目的,我将使用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

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

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2016-07-30
      • 2010-10-03
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多