デジタルコンテンツの制作

nekosuko.jp

RPG レッスン

【12】ステータスウィンドウに表示してみる|RPGを作ってみる

更新日:

ステータスウィンドウの操作

ステータスウィンドウに反映させるために、StatusController.csファイルを作成してStatusWindowオブジェクトにアタッチします。

UIを使うために名前空間を追加します。

StatusControllerに各テキストをアウトレット接続するための変数を作ります。

コードを見やすくするためprivateなメンバ変数heroStatusとdungeonStatusを作って参照しておきます。

ステータスウィンドウに情報が反映されるようにUpdateメソッドに情報を更新する処理を書いておきます。

StatusController.cs

using UnityEngine.UI;

public class StatusController : MonoBehaviour
{
    public Text Level;
    public Text HP;
    public Text Dungeon;
    public Text Food;

    private UnitStatus heroRecord;
    private DungeonStatus dungeonRecord;

    // Start is called before the first frame update
    void Start()
    {
        if (GameManager.instance == null)
        {
            return;
        }

        heroRecord = GameManager.instance.PlayRecord.HeroStatus;
        dungeonRecord = GameManager.instance.PlayRecord.DungeonStatus;
    }

    // Update is called once per frame
    void Update()
    {
        if (GameManager.instance == null)
        {
            return;
        }

        Level.text = "Lv " + heroRecord.Level;
        HP.text = "HP " + heroRecord.HP + " / " + heroRecord.GetMaxHP();
        Dungeon.text = "ダンジョン " + dungeonRecord.Floor + "F";
        Food.text = "食料 " + dungeonRecord.Food;
    }
}

GameManager.instanceがnullのときは処理しないようにしています。

UIオブジェクトをアウトレット接続する

StatusWindowスクリプトにpublicなメンバ変数を追加すると、StatusWindowオブジェクトのインスペクタウィンドウに表示されるのでアウトレット接続します。

StatusWindowオブジェクトをプレハブ化する

ステータスウィンドウは他のシーンでも使うのでStatusWindowオブジェクトをプレハブにしておきます。

WindowプレハブであるStatusWindowをさらに別のプレハブにしようとしているので以下のように聞かれますが、Prefab Variantを選択します。

テキストなどのUIマスターを変更したときに、StatusWindowのプレハブにも反映されるようになります。

リンク

-RPG, レッスン

Copyright© nekosuko.jp , 2021 All Rights Reserved.