ノンフィールドRPGの作り方6 ステータスウィンドウの更新処理とダンジョン進行コマンドを実装しよう | Unity入門の森 ゲームの作り方

ノンフィールドRPGの作り方6 ステータスウィンドウの更新処理とダンジョン進行コマンドを実装しよう

Unity 初心者向けノンフィールドRPGの作り方 (スマホ化対応)

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

この記事はノンフィールドRPGの作り方講座の第6回です。

前回はダンジョンシーンのオブジェクト配置とプレイデータ管理用のクラス作成を行いました。

前回の記事:

Unity ノンフィールドRPGの作り方5 3Dダンジョンの制作と光源の設置/プレイデータ管理クラスの作成
この記事はノンフィールドRPGの作り方講座の第5回です。前回はダンジョンシーンの作成とステータスUI・行動ボタンの作成を行いました。前回の記事:第5回ではダンジョンにオブジェクトを配置していき、プレイデータを管理するクラスを作成します。ダン...

第6回ではダンジョンでの前進処理やUI表示の処理を実装していきます。前回までに作ったパーツを組み合わせて実際にUnity上で動くようにしていきましょう!

【ゲームの作り方講座プレゼント中!】

プレイデータを作成してGameManagerで管理する

前回作成したゲームプレイデータを表現するPlayRecordクラスを作成しました。このクラスを使ってGameManagerで実際にゲームプレイデータを管理してみましょう。

ゲームのプレイデータをGameManagerクラス内で作成しておきます。このゲームではセーブ・ロード機能を実装することになりますが、ここではまず仮のデータを作成しています。

これでプレイデータ(実体化されたPlayRecordクラス)にはGameManager.Instance.PlayRecordからアクセスすることができます。

ダンジョンシーンの処理を行うスクリプトとオブジェクト

ダンジョンシーン全体の処理を行うDungeonDirectorスクリプトを作成し、このスクリプトをアタッチするためのオブジェクトを作成します。

[Assets/Scripts]フォルダを選択して右クリックし、[Create]→[Scripting]→[MonoBehaviour Script]をクリックします。スクリプトファイルの名前を「DungeonDirector」とします。

Hierarchyビューを右クリックして、[Create Empty]をクリックして空のオブジェクトを作成します。オブジェクトの名前は「Director」とします。

HierarchyビューにあるDirectorオブジェクトを選択してInspectorビューを表示します。

一番下にある[Add Component]をクリックし、検索バーに”Dungeon”と入力します(”DungeonDirector”まで入力しても可)。表示される一覧の中に「Dungeon Director」が表示されるのでクリックしてアタッチします。

スクリプトの中身は後ほど作成します。

ステータスウィンドウの処理を行うスクリプトを新規作成

ステータスウィンドウに主人公の状態を表示するためのスクリプトを作成します。

[Assets/Scripts]フォルダを選択して右クリックし、[Create]→[Scripting]→[MonoBehaviour Script]をクリックします。スクリプトファイルの名前を「StatusWindowController」とします。

HierarchyビューにあるCanvasオブジェクトの子オブジェクトになっているStatusオブジェクトを選択してInspectorビューを表示します。

一番下にある[Add Component]をクリックし、検索バーにStatusWindowと入力します。表示される一覧の中に「Status Window Controller」が表示されるのでクリックしてアタッチします。

ステータスウィンドウの更新処理-レベル・HP・階層・食糧の数値変化をUIに反映させる機能-を実装

ステータスウィンドウにLevel、HP、階層、残りの食料を表示する処理を実装します。文字列補間を使って文字列を置き換えて表示します。

文字列補完とは文字列中に変数や式を埋め込む便利な機能です。以下のような書き方をします。

スクリプトの可読性が高まる書き方なのでここでマスターしておきましょう。

StatusWindowController.cs

以下のようにスクリプトの中身を記述します。

このスクリプトでは、ゲームのUI(ユーザーインターフェース)にキャラクターおよびダンジョンのステータス情報を表示・更新する処理を実装しています。

例えば戦闘で攻撃を受けたり、ダンジョン探索で食料が減ったりしたときに、ここで実装したメソッドを呼び出せば数値の変化をUIに反映させることができます。

最初にusing文で使用するライブラリの定義を行います。TextMeshProを操作するときはTMProをusingします。

次に、キャラクターとダンジョンのステータス情報更新処理を実装しています。

構造はほぼ同じでTextMeshProオブジェクトにちゃんとコンポーネントをアタッチできているかのチェックを行い、ちゃんとオブジェクトがアタッチされていれば文字列表示処理を行うようにしています。

if (LevelText != null) { ~(実際の処理)~ }

こうした書き方をnullチェックといいます。UnityのインスペクターでUIコンポーネントの紐づけミスを事前に防いでくれます。

ステータスウィンドウのテキストオブジェクトをアタッチする

StatusWindowControllerの変数とUIオブジェクトを接続するためにアタッチします。

HierarchyビューにあるStatusオブジェクトをクリックしてInspetorビューを表示します。

各テキストオブジェクトをStatusWindowControllerスクリプトに、ドラッグアンドドロップでアタッチします。

ステータスウィンドウをプレハブにする

ステータスウィンドウはバトルシーンでも使うため、ここでプレハブにしておきます。

Canvasの子オブジェクトになっているStatusオブジェクトを、[Assets/Prefabs]フォルダにドラッグアンドドロップします。

プレハブ化できるとHierarchyビューのStatusオブジェクトの文字が青色になります。

ダンジョンを管理するスクリプトDungeonDirector.csを実装しよう

DungeonDirectorクラスはダンジョンシーンを管理するクラスです。

このゲームでは前提としてタイトル画面から始まるようになっていて初期化などもタイトル画面で行います。

そのため、Unityでの開発中の処理としてGameManagerクラスが実体化されていない、すなわちタイトル画面から始まっていない場合はタイトル画面に遷移するようにします。

Updateメソッドを使用する予定がないためコメントアウトしておきます。削除しても良いのですが、今後演出などで使用する可能性があるので念のためコメントアウトしておきます。

DungeonDirector.cs

続きを読む
このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

今回はダンジョンシーンのUIステータス更新処理とダンジョンの前進処理の実装を行いました。前進ボタンを押すことでダンジョンの階層を進み、食料が減る機能も制作できました。

次回はさらにダンジョンシーンでの機能実装を進めていきます。休憩ボタンの処理や前進したときにカメラを移動させる演出面を強化する処理を実装します。

次の記事:

Unity ノンフィールドRPGの作り方7 HP回復システムと3Dダンジョン移動システムを実装しよう
この記事はノンフィールドRPG講座の作り方の第7回です。前回はダンジョンシーンのUIステータス更新処理とダンジョンの前進処理を実装しました。前回の記事:第7回ではダンジョンでの休憩ボタンや3Dダンジョン内でのカメラの移動処理を実装していきま...

Unity ノンフィールドRPGの作り方講座に戻る>>

 

 

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました