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