現場レベルのゲーム制作が、すべてここで学べます。
この講座は3Dダンジョン探索型RPGの作り方について説明しています。今回はその第11回目になります。
前回から引き続きタウンシーンの開発を進めます。今回はスクリプトを作成してキャラクター作成・編成のシステムやシーン遷移を実装します。
前回の記事:

Unityで職業選択システムを開発する
前回の記事で触れたように、全てのアクターはいずれかの職業(Job)に就いています。どの職業にするかはキャラクター作成時に選択できるようにします。
まずは職業データの定義から始めます。今回もScriptableObjectでデータ作成を行える設計にしていきましょう。
キャラクターの能力値(最大HPや攻撃力など)は職業ごとの初期値と現在レベルによって決定されます。
また、今回は実装しませんが「習得可能なスキルのリスト」も今後職業ごとに設定できるようにしていきます。
まずは職業ごとにステータス初期値の設定と職業名、職業の説明文章を入力できるようにします。
JobData.cs (新規)
Scripts > DefinesフォルダにC#スクリプトを新規作成して以下を入力します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
using UnityEngine; using System; using System.Collections.Generic; /// <summary> /// 職業データを定義するScriptableObject /// </summary> [CreateAssetMenu (fileName = "JobData", menuName = "Dungeon/JobDataSO")] public class JobData : ScriptableObject { [Header ("職業基本情報")] public string jobName_JP; // 職業名(JP) public string jobName_EN; // 職業名(EN) [Multiline (2)] public string description_JP; // 職業説明(JP) [Multiline (2)] public string description_EN; // 職業説明(EN) [Header ("初期ステータス")] public int st_HP; // 最大HP public int st_TP; // 最大TP public int st_Atk; // 物理攻撃力 public int st_Def; // 物理防御力 public int st_MAtk; // 魔法攻撃力 public int st_MDef; // 魔法防御力 public int st_Luc; // 運 public int st_Speed;// 速度 /// <summary> /// 職業名を取得する /// </summary> public string GetJobName () { // 設定言語が日本語なら日本語の職業名、英語なら英語の職業名を返す return SimpleTranslationText.GetTranslatedString (jobName_JP, jobName_EN); } /// <summary> /// 職業説明を取得する /// </summary> public string GetJobDescription () { // 設定言語が日本語なら日本語の職業説明、英語なら英語の職業説明を返す return SimpleTranslationText.GetTranslatedString (description_JP, description_EN); } } |
職業名・職業説明文章の取得に前回作成したSimpleTranslationTextクラスのGetTranslatedStringメソッドを実用しています。
このメソッドはstaticメソッドとして定義しているので、クラスのインスタンスへの参照を得なくても使用可能です。
またstring変数に[Multiline]属性を付与することで、Inspectorから文章を入力する際に改行を行うことが可能になります。
職業データをScriptalbeObjectで作成
サンプルゲームでは全8種の職業が存在しているので、以下に各入力内容を画像で紹介します。
なお全く同じように作成する必要はありません。
数も8種類でなくて良いですが、キャラクター作成時の職業切り替え機能を確認するために最低2つはあるのが望ましいです。
ScriptableObjectsフォルダに新しくJobsフォルダを作成し、その中に職業データを保存していきます。右クリックし、Create > Dungeon >JobDataSOで作成していきます。









ダンジョンへ進む/キャラクターメイキング/パーティ編成UIを動くように機能実装
施設UIを操作する基底クラスを作成する
前回の記事で「ダンジョンへ行く」「キャラクター作成」「編成」の3つのウィンドウ(施設UI)を作成しました。ここからはこれらを処理するスクリプトを作成していきます。
各施設UIはウィンドウの開閉やそれに伴うアニメーションなどの共通処理をもちます。よって、施設UIごとに独立のクラスを1から作成するのではなくクラスの継承を用いた設計にします。
まずは各施設UIクラスの基底クラスとなるFacilityUIBaseを作成します。
FacilityUIBase.cs (新規)
FacilityUIBase.csをScripts > Townフォルダ内に新規作成し、以下を入力します。
まとめ

2章にまたいで街シーンとその機能を実装しました。現在はキャラクター作成と編成、その状態でのダンジョン突入までが行えます。
ただし、現時点ではダンジョンシーンからのバトルシーンへの移行がなく本当に編成が変わっているのかの確認ができません。よって次回はエンカウントシステムと戦闘の開始を実装していきます。
次の記事:

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






コメント