イベントのデータを登録するためのクラスを作成します。
先ほども説明しましたように、イベントには色々な種類がありますので、その情報を EventType という情報として登録できるようにしておきます。
これは1つのファイルとして作成することもできますが、今回は EventData のファイル内に一緒に作成して利用する設計にします。
EventType は enum (イーナム) を利用して、イベントの種類を事前に登録し、この情報をイベントの持つ情報として EventData クラス内に設定できるようにします。
enum ではゲーム内に登場させたい種類の情報を、列挙子(れっきょし)という形で種類を作成できます。
今回は、イベントの種類、という情報を
EventType という名前で作成し、その中に
イベントの種類を登録しておきます。
これは追加可能な情報ですので、先々に
イベントの種類が増えても対応できます。
EventData.cs
<= クリックすると開きます
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class EventData // <= MonoBehaviour クラスの継承はありませんので、削除してください。
{
/// <summary>
/// イベントの種類
/// </summary>
public enum EventType {
Talk,
Search,
}
public EventType eventType; // イベントの種類
public int no; // 通し番号
public string title; // タイトル。NPC の名前、探す対象物の名前、など
[Multiline]
public string dialog; // NPC のメッセージ、対象物のメッセージ、など
public Sprite eventSprite; // イベントの画像データ
// TODO そのほかに追加する場合には以下に補記する
}
スクリプトを作成したらセーブします。
2つ以上の情報を管理する場合には、enum でその種類を登録しておくことをおすすめします。
enum を利用する場合、その登録してある列挙子からしか情報を指定できませんので、
例えば、文字列と異なり、指定に際して打ち間違えが発生しませんので、不備の値が入ることも防ぐことが出来ます。
ゲームの内容に応じた enum を考えて作成して運用します。
プレイヤーの状態用(毒、混乱、痺れとか)、アイテムの種類(消耗品、武器、防具、など)、
ゲームの状態管理(ゲーム開始前、ゲーム中、ゲーム終了)など、
非常に応用が利く機能です。
なお enum では
各列挙子に自動的に整数の番号が与えられます。
一番上から 0 で連番になっています。
今回の場合であれば、Talk には 0、Search には 1 の数字が与えられています。
この番号は見えない情報ですが、
列挙子を int 型にキャストを行うことで取得して利用出来ます。
下記の例の場合、eventValue には 0 が代入されます。
<enum の列挙子のキャスト>
int eventValue = (int)EventType.Talk;
また、列挙子の宣言時に数字を指定して代入することも可能です。その場合には連番ではなく、指定した数値を取得出来ます。
<数字の代入の例(今回この方式は利用しません)>
EnemyType.cs
public enum EventType {
Talk = 10,
Search = 5,
}
上記のように代入されている場合には、列挙子を int 型にキャストすると、代入してある値が取得出来ます。
今回は数字の代入は行っていませんので一番上の列挙子には 0 から順番に採番されています。