【Unity】RPGを作るチュートリアルその24 キャラクターの定義データを作成

【Unity】RPGを作るチュートリアルその24 キャラクターの定義データを作成

シンプルなRPGをUnityで作るチュートリアルシリーズの24回目です。

第23回では以前作成した定義データ(魔法とアイテム)の修正を行いました。

今回はキャラクターの定義データを作成していきます。定義データの作成は一通り終わりました! と言ってからの追加で申し訳ないですが、戦闘機能を作ってみたら「これあった方がいいなー」と気づいてしまったので入れさせてください!

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。

 

チュートリアルの一覧

このシリーズ全体の一覧は以下のページにまとめています。

 

前回の内容

前回は以前作成した定義データ(魔法とアイテム)の修正を行いました。

 

キャラクターの定義データ

元々は以前作成したレベルに対応するパラメータ表の「ParameterTable」をキャラクターの定義として使おうと考えていましたが、戦闘の機能を作ってみた結果、データ構造や取り回しのしやすさを考えてキャラクター用に定義データを作った方が良いと考えました。フィールドとしては多くないのですが、以下のものを入れたいと思います。

  • キャラクターのID
  • キャラクターの名前
  • キャラクターが覚える魔法のリスト

キャラクターが覚える魔法のリストに関しても、レベルと魔法の対応を保持するクラスを作成していきます。

キャラクターに紐付く情報はこちらの定義データに入れておくと良さそうです。今回は導入しませんが、顔グラフィックを使う場合はスプライトもフィールドとして用意しておくと良いかと思います。

キャラクターのデータに関しては、

  • 定義データ
  • 実行中データ

の2つを用意する予定です。今回実装するのは定義データの方です。

実行中データの方では、覚えた魔法のリストを保持するようにしたいと思います。レベルアップの他に、イベントなどでも覚えさせることができるようにこの形にしています。

 

キャラクターが覚える魔法のリスト用クラスの作成

まずはこちらから作っていきます。

Projectウィンドウから「Assets/Scripts/Data」のフォルダに移動し、空のスクリプトファイルを作成します。名前は [CharacterMagicRecord] にしました。

スクリプトファイルの作成
スクリプトファイルの作成

 

作成した「ItemEffectCategory」の中身は以下のように記載しました。

ScriptableObjectから参照するので[Serializable]をつけています。そのレベルになったら覚える魔法を定義するデータで、レベルアップ時に確認するようにして、該当のレベルになっていたらその魔法を覚える処理を行います。

 

キャラクターの定義データクラスの作成

続いて定義データを作成します。Projectウィンドウの「Assets/Scripts/Data」のフォルダにて、ScriptableObjectのスクリプトファイルを作成します。名前は [CharacterData] にしました。

定義データの作成
定義データの作成

 

作成した「CharacterData」の中身は以下のように記載しました。

キャラクターのIDは実行中のデータとも紐付くので、大事な情報になります。また、このデータ内で名前を定義しておきましょう。

 

このスクリプトファイルを保存したら、ScriptableObjectのデータも作成しておきます。Projectウィンドウから「Assets/Data」のフォルダに移動し、コンテキストメニューの [Create] -> [Scriptable Objects] -> [SimpleRpg] -> [CharacterData] からScriptableObjectのアセットファイルを作成します。名前は [CharacterData] にしました。

定義データの作成
定義データの作成

 

作成した「CharacterData」を選択し、Inspectorウィンドウから設定を行います。「Character Id」は [1]、「Character Name」は [アレン]、「Character Magic Records」では 「Level」を [2]、「Magic Id」を [1] にします。

キャラクターのデータを入れる
キャラクターのデータを入れる

 

名前はAから始まるものにしたかったので、それっぽい名前にしました。ツクール経験者としてはアレックスにすべきだったかもしれません。いや、そのままはまずいか。

 

キャラクターのパラメータ表にIDを追加

キャラクターのIDを導入したので、パラメータ表にもIDのフィールドを追加しておきます。「Assets/Scripts/Data」のフォルダにある「ParameterTable」のファイルにて、以下のように「characterId」のフィールドを追加しましょう。

経験値表については全キャラクターで使い回す想定なのでIDのフィールドは入れませんが、仲間が複数人いて必要経験値が異なる場合はそちらもキャラクターIDのフィールドを追加しておくと良いかと思います。

追加したフィールドに値を設定するため、Projectウィンドウから「Assets/Data」のフォルダに移動し、「ParameterTable」のアセットを選択します。Inspectorウィンドウから「Character Id」の値を [1] にします。

キャラクターIDの設定
キャラクターIDの設定

 

これでキャラクターの定義データに関しては作業完了です。

 

今回のブランチ

 

まとめ

今回はキャラクターの定義データを作成しました。また、キャラクターのIDをもとに必要な情報を組み合わせるため、パラメータ表に関してもキャラクターIDを設定しました。

次回は作成した定義データを管理する仕組みの作成に入っていきます。戦闘中は特に様々な定義データを使用するため、データの取得がしやすくなるように管理用のクラスを作っていきたいと思います。また、データ自体を読み込む仕組みとしてUnityのAddressablesを使うので、その準備作業から始めていきましょう。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!