i-school - コンディション機能の実装5
 コンディションの情報をデータベース化し、プレファブ内で設定せずに、データベースから情報を参照して自動的に設定する機能を実装します。




設計


 コンディション用の情報を管理するためにスクリプタブル・オブジェクトを作成し、そちらに各コンディションの情報を設定するようにします。
それが完成したら、応用として、コンディション用のシンボルのコンディションの情報に、このデータベースの情報を参照して自動的に設定する機能の実装に挑戦します。


ConditionData スクリプトを作成する


 MonoBehaviour クラスを継承していないクラスを作成します。
そのため、このクラスはゲームオブジェクトにはアタッチできません
あくまでもデータ用として利用するために作成しておきます。


ConditionData.cs

<= クリックすると開きます




ConditionDataSO スクリプトを作成する


 ConditionData クラスを List にして管理するクラスを作成します。
この ConditionDataSO スクリプトを利用してスクリプタブル・オブジェクトを作成します。


ConditionDataSO.cs

<= クリックすると開きます



ConditionDataSO スクリプト内に ConditionData クラスを一緒に作成する場合


 なお、上記の2つのスクリプトを分けず、1つのスクリプト内に入れ子クラスとして作成することもできます。
これはどちらの方法を利用しても構いません。


<= クリックすると開きます



ConditionDataSO スクリプタブル・オブジェクトを作成する


 Datas フォルダ内で右クリックをしてメニューを開き、Create => Create ConditionDataSO を選択します。
ConditionDataSO スクリプタブル・オブジェクトを作成されます。名前はそのままで問題ありません。


インスペクター画像



 自分で作成してあるコンディションの数だけ、List の Size を設定して、コンディションの情報を設定してください。


設定後のインスペクター画像(参考画像)



DataBaseManager スクリプトを修正する


 ConditionDataSO スクリプタブル・オブジェクトを他のスクリプト内で利用できるように DataBaseManager クラスに変数を追加してアサインします。


DataBaseManager.cs

<= クリックすると開きます



DataBaseManager ゲームオブジェクトの設定を行う


 Datas フォルダ内にある ConditionDataSO スクリプタブル・オブジェクトをドラッグアンドドロップしてアサインしてください。
これで利用できる環境になりました。


インスペクター画像


 
 コンディション機能の実装3から来ている場合には、ここで実装3に戻ってください。


<考えよう!> コンディション用のシンボルが生成されたときに、ConditionDataSO スクリプタブル・オブジェクトの情報を参照してコンディションの設定を行う


 こちらの部分は、コンディション機能の実装4が終了してから挑戦してください

 各コンディションごとに、プレファブにデータの値を設定するのは煩わしい作業になるため、
ConditionDataSO スクリプタブル・オブジェクトに設定している ConditionData のデータを使って、自動的に設定する機能を実装してみましょう。
TODO で記述している部分が役立ちます。

 各コンディション用のシンボルのプレファブには ConditionItemSymbol クラスがアタッチされており、
このクラスには ConditionType の情報が設定されていますので、この情報を検索条件にして情報を取得して設定するといいでしょう。


ConditionItemSymbol.cs

<= クリックすると開きます