1. ホーム
  2. enums

[解決済み] Godotで文字列をenumに変換するには?

2022-02-12 13:15:33

質問

Godot 3.4 を使用して、enum を次のように設定しています。

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

そして、文字列 "STRENGTH" が enum 値 (0) を返すようにしたいのです。以下のコードで配列の最初の項目を表示したいのですが、現在、STRENGTHは無効な取得インデックスであるというエラーが表示されます。

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

私は何か間違ったことをしているのでしょうか、それとも文字列をenumとして認識できるものに変換する機能はあるのでしょうか?

解決方法は?

まず、enumには名前が必要です。名前がなければ、enum は一連の定数を作るための単なる空想の方法です。この答えのために、ここでは MyEnum のようなものです。

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

さて、enumを参照して、その要素について質問することができます。特に、このような名前に関連する値が何であるかを把握することができます。

    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


取得されるのは、enumの内容を持つ通常のディクショナリ・プリセットです。ですから、すべての値について尋ねることができます。

    for boost in MyEnum:
        print(boost)

どちらが印刷されるか。

STRENGTH
DEXTERITY
CONSTITUTION
INTELLIGENCE
WISDOM
CHARISMA

また、特定のものがあるかどうかを尋ねることもできます、例えば print(MyEnum.has("ENDURANCE")) プリント False .

そして、はい、あなたは辞書を編集することができました。これは、enumの値で初期化された辞書に過ぎません。