Unity ノンフィールドRPGの作り方講座9 マスターデータの作成と戦闘シーンの背景構築 | Unity入門の森 ゲームの作り方

Unity ノンフィールドRPGの作り方講座9 マスターデータの作成と戦闘シーンの背景構築

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

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

【永久会員チケット】

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

全講座を見放題で学ぶ

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

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

前回はバトルシーンの設定とUIを作成しました。

前回の記事:

Unity ノンフィールドRPGの作り方8 3DダンジョンRPGのターン制戦闘システム画面を作る
この講座はUnity ノンフィールドRPGの作り方講座の第8回です。前回はダンジョンシーンの休憩の処理とカメラの移動処理を実装しました。前回の記事:第8回ではいよいよRPGに必須の戦闘画面を作っていきます。バトルシーンの初期設定を行い、UI...

第9回ではマスターデータを作成し、敵キャラの表示やバトルシーンの背景を作成していきます。

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

マスターデータの作成 敵キャラクターデータをScriptable Objectで実装する

マスターデータとは、敵キャラの「名前」「HP」「攻撃力」など、ゲームの中で何度も使われる基本情報(元になるデータ)のことです。
Unityではこれを ScriptableObject という仕組みを使って効率よく管理できます。

敵キャラの情報(パラメータ)を保管しておくクラスを作る

まずは敵キャラの基本情報となるEnemyParamsクラスを作成します。[Assets/Scripts]フォルダを右クリックし、[Create]→[Scripting]→[Empty C# Script]をクリックして、名前をEnemyParamsにします。

EnemyParamsクラスを編集していきます。このゲームでは敵キャラはIDとスプライト(画像)だけをクラスの変数として持たせます。

この変数はここでは private(外から見えない)にしていますが、[SerializeField] をつけることで インスペクターでは見えるようにしています。

そして、外から読み取り専用で取得できるようにしています(「プロパティ」といいます)。
こうすることで、書き換えられる心配がない安全な設計になります。

EnemyParams.cs

このEnemyParamsでは敵キャラ1体のパラメータを定義します。

public string ID => id;

この書き方はC# の「式形式プロパティ」(expression-bodied property) の構文で以下の式と等価です。

つまり、プロパティ IDget アクセサ しか持たず、set アクセサ(= 書き込み)は存在しません。したがって、外部からこのプロパティに値を設定することはできません。よって、「読み取り専用」となります。

関連記事:Unity C# フィールド・プロパティ・アクセス修飾子の使い方 スコープの概念を理解する

UnityC#のフィールド・プロパティ・アクセス修飾子の使い方 スコープの概念を理解する
今回の記事ではクラスのメンバであるフィールドとプロパティをまず解説し、次にアクセス修飾子とスコープについての理解を深めていきます。ややこしいところですが、頑張っていきましょう!前回の記事:クラスにフィールドとプロパティを持たせてみようそれで...

もし難しかったらとりあえずここでは他のクラスから情報を直接変更できないんだなと思えばOKです。

複数の敵キャラをまとめて管理するためのクラスを作ろう

次に、先ほど作成した敵キャラ1体の定義を行ったEnemyParamsクラスを使い、複数の敵キャラをまとめて扱うクラスを作ります。

ScriptableObjectを継承したクラスを作成することで、データだけを独立して管理できるオブジェクトを作成できます。

またScriptableObjectはInspectorでデータを編集できるため管理がしやすくなります。

[Assets/Scripts]フォルダを右クリックし、[Create]→[Scripting]→[ScriptableObject Script]をクリックして、名前をEnemyDataにします。

EnemyDataクラスに先ほど作成したEnemyParamsクラスをListで変数EnemyListとして宣言しておきます。

このEnemyListの中からランダムで敵キャラのIDを取得するメソッドと、敵キャラのIDから敵キャラの情報(EnemyParams)を取得するメソッドを追加します。

つまり敵キャラのデータベースを作成していくことになります。

EnemyData.cs

[CreateAssetMenu(fileName = “EnemyData”, menuName = “Scriptable Objects/EnemyData”)]は、ScriptableObjectのデータアセットを作成するために必要になります。

データアセットの作成

データアセットとは先ほどEnemyData.csで定義したScriptableObjectを使って作成される、Unity内で管理できる「設定データファイル」のようなものです。

[Assets/Data]フォルダを右クリックし、[Create]→[ScriptableObject]→[EnemyData]をクリックします。

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

まとめ

ここまでで敵キャラのマスターデータを作成し、バトルシーンのオブジェクトを配置しました。

ですが現状では画像UIを表示しただけでバトルシーンの処理は実装できていません。

次回からバトルシーンになったときの音楽切り替え、マスターデータを用いた敵キャラの表示やステータスウィンドウの表示(主人公、敵キャラ)、プレイヤー側で発動するスキルの処理等を実装していきます。

次の記事:

UnityノンフィールドRPGの作り方10 C#で戦闘システムを作ろう ~BGM切り替え/ステータス更新処理/スキル処理を開発~
この記事はUnityノンフィールドRPGの作り方講座の第10回です。前回はScriptableObjectを使ってマスターデータの作成と戦闘シーンへのオブジェクトの配置を行いました。前回の記事:ですが、まだマスターデータの中身に基づいて敵キ...

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

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

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

【永久会員チケット】

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

全講座を見放題で学ぶ

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

コメント

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