ステータスウィンドウの操作
ステータスウィンドウに反映させるために、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のプレハブにも反映されるようになります。