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