1つ1つの干支の情報を扱うために、EtoInfo クラスを作成します。
これはゲームオブジェクトにアタッチして利用します。
情報としては、干支の種類(EtoType)、point の値、干支の画像の情報、プレイヤーのクラスかNPC 用に利用しているか、を変数を宣言して管理します。
これはプレイヤーも NPC も共通で利用します。
このクラスは始めは何も情報を持っていません。そのため、
どの干支でもない状態ですが、
逆に考えると、
どの干支にもなれる状態です。プログラムではこういった設計のものが多くあります。
今回は、外部のクラス(今回は EtoInfoManager)より、干支の情報を引数で受け取り、それを設定することで
干支としての振る舞いを与えられるように設計しています。
例えば、丑の情報が引数でとどき、丑の画像を設定することで、このクラスは丑の干支の情報を管理するクラスになります。
このような設計にしておくことで、
干支の情報のクラスを12個別々に用意するのではなく、
1つのクラスに異なる情報を設定することで、12種類になるようにします。
振る舞いを変える、という部分がプログラムでは非常に便利であるとともに、難しい部分でもありますので、
実際にどのように処理が動いて、ゲーム画面ではどのようになるのかを学習してください。
Unity ではクラスをオブジェクトとして実際のゲーム画面やエディターで確認できることを活用して理解を深めましょう。
EtoInfo.cs
<= クリックすると開きます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class EtoInfo : MonoBehaviour
{
public EtoType etoType; // 干支の種類
public int point; // ポイントの点数
public Image etoImage; // 画像の設定
public Text txtPoint; // ポイントの表示
public bool isMyInfo; // NPCか、プレイヤーか。true をプレイヤーとして扱う
/// <summary>
/// 干支情報の設定
/// </summary>
/// <param name="etoTypeNum"></param>
/// <param name="point"></param>
public void SetUpEtoInfo(int etoTypeNum, int point) {
// 干支の種類を設定
this.etoType = (EtoType)etoTypeNum;
// ポイントの設定
this.point = point;
// 干支の画像の設定(画像を Resources フォルダより読み込む。別の方法でも可)
etoImage.sprite = Resources.Load<Sprite>("EtoIcon/" + etoTypeNum);
// 干支の種類が猫の場合
if (this.etoType == EtoType.猫) {
this.point = 0;
isMyInfo = true;
}
// ポイントの表示
DisplayPoint();
}
/// <summary>
/// ポイントの表示更新
/// </summary>
public void DisplayPoint(){
// ポイントの表示
txtPoint.text = point.ToString();
}
}