Enumとは?
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 37/78。
値の中には、いくつかの選択肢のうちの1つしか取れないものがあります。たとえば、信号機は赤、黄、または緑で、プレイヤーは待機中、走行中、またはジャンプ中です。選択肢を数値で格納することもできます。待機中を0、走行中を1とします。しかし、その場合、読む人は誰でも、それぞれの数値が何を意味するのか覚えておかなければなりません。
var state := 1
if state == 1:
print("Running")enum(列挙型の略)は、それぞれの選択肢に名前を付けます。GDScriptは、0から始まる番号を名前に割り当てます。
enum State { IDLE, RUN, JUMP }これで、1の代わりにState.RUNと書きます。列挙型の名前、ドット、そして選択肢です。コードを見れば意味がわかります。
var state := State.RUN
if state == State.RUN:
print("Running")enumは、func _ready():の隣にあるスクリプトのトップレベルで宣言し、その中には記述しません。関数内にenum行を記述するとエラーになり、プログラムの実行前に停止します。
extends Node
enum State { IDLE, RUN, JUMP }
func _ready():
var state := State.JUMP
print(state) # 2オプションは定数なので、State.RUN = 5 はエラーです。State.RUNN のようにオプションのスペルを間違えるとプログラムの実行前に報告されますが、2 の代わりに 3 のような誤った数値を使っても検出されません。
チャレンジ
簡単プログラムは、天気を表す 0 から 3 までの整数を読み取ります。enumを使って数値に名前を付け、アドバイスを1つ出力してください。
- スクリプトのトップレベルで、選択肢が
SUNNY、CLOUDY、RAINY、SNOWYの順に並ぶ、Weatherという名前のenumを宣言してください。 weatherを数値ではなくenumの選択肢と比較し、1行を出力してください。
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.SNOWY:Build a snowman
入力が 2 の場合、出力は次のとおりです。
Take an umbrella自分で試してみよう
extends Node
# ここで Weather enum を宣言する
func _ready():
var weather := int(OS.read_string_from_stdin())
# weather を enum の選択肢と比較し、アドバイスを出力する
pass
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ