参考用に、武器の種類を登録しておくための enum の作成方法を提示します。
手順11でも学習していますので、復習として作成しておくといいでしょう。
enum (イーナム)を利用して、武器の種類を事前に登録し、この情報を武器の持つ情報として WeaponData クラス内に設定できるようにします。
enum のみでスクリプトを作成する場合、
using の宣言や、MonoBehaviour(モノビヘイビア) クラスの継承は不要です 。
そしてどのスクリプトからでも
変数の代入なしで利用可能 になります。
enum ではゲーム内に登場させたい種類の情報を、列挙子(れっきょし)という形で種類を作成できます。
今回は武器の種類という情報を
WeaponType という名前で作成し、その中に
武器の種類 を登録しておきます。
これは追加可能な情報ですので、先々に
武器の種類が増えても対応できます 。
WeaponType.cs
<= クリックすると開きます
public enum WeaponType { // enum の宣言
Normal, // ここからが列挙子
Freeze,
Fire,
}
スクリプトを作成したらセーブします。
3つ以上の情報を管理する場合には、enum でその種類を登録しておくことをおすすめします。
enum を利用する場合、その登録してある列挙子からしか情報を指定できませんので、
例えば、文字列と異なり、指定に際して打ち間違えが発生しませんので、不備の値が入ることも防ぐことが出来ます。
ゲームの内容に応じた enum を考えて作成して運用します。
プレイヤーの状態用(毒、混乱、痺れとか)、アイテムの種類(消耗品、武器、防具、など)、
ゲームの状態管理(ゲーム開始前、ゲーム中、ゲーム終了)など、
非常に応用が利く機能です。
なお enum では
各列挙子に自動的に整数の番号が与えられます 。
一番上から 0 で連番になっています 。
今回の場合であれば、Normal には 0、Fire には 2 の数字が与えられています。
この番号は見えない情報ですが、
列挙子を int 型にキャストを行うことで取得して利用出来ます。
下記の例の場合、enumValue には 1 が代入されます。
<enum の列挙子のキャスト>
int enumValue = (int)WeaponType.Freeze;
また、列挙子の宣言時に数字を指定して代入することも可能です。その場合には連番ではなく、指定した数値を取得出来ます。
<数字の代入の例(今回この方式は利用しません)>
WeaponType.cs
public enum WeaponType {
Normal = 10,
Freeze = 5,
Fire = 100
}
上記のように代入されている場合には、列挙子を int 型にキャストすると、代入してある値が取得出来ます。
今回は数字の代入は行っていませんので一番上の列挙子には 0 から順番に採番されています。