この手順は、スクリプタブル・オブジェクトをゲーム内で利用するための処理を作成します。
作成したスクリプタブル・オブジェクトをゲーム内で利用するためには、他のスクリプトやコンポーネントと同じように
いずれかのスクリプト内においてSerializeField属性 や public 修飾子で型の宣言を行います。
そして用意した変数内に、インスペクターよりスクリプタブル・オブジェクトをアサインすることで利用可能になります。
今後もスクリプタブル・オブジェクトを管理することを前提とし、スクリプタブル・オブジェクト関連の情報を管理するためのスクリプトとして
DataBaseManager スクリプトを作成し、その中で型と変数の宣言を行うようにします。
スクリプタブル・オブジェクトはデータベースという特性上、色々なスクリプトから参照されることを見越して作成しておくと利便性が増します。
そうなった場合、各スクリプトに毎回 DataBaseManager スクリプトの情報を宣言して利用できるようにしてもよいのですが、
この設計方法ですと、新しいスクリプトを作成するたびに、DataBaseManager スクリプトの情報を都度用意する必要が発生してしまい、管理が大変になります。
C# には
シングルトンデザインパターンという便利な機能がありますので、こちらを利用して、DataBaseManager スクリプトの作成を行います。
シングルトンデザインパターンという方式で作成した DataBaseManager クラスを用意して、その中に上記の情報を作成します。
シングルトンで作成した DataBaseManager クラスは、
変数への代入処理を行うことなく外部のスクリプトで利用できるクラスになります。
処理の流れは次のように設計しています。
<処理の流れ>
1.DataBaseManager クラス内に、スクリプタブル・オブジェクトと、そのスクリプタブル・オブジェクトを利用できるメソッドを準備しておく
2.NCP がゲームスタート時に DataBaseManager クラスに用意しておいたデータベースから会話イベントを取得するメソッドを実行し、必要な会話イベントを取得する
3.プレイヤーキャラが NPC に会話イベントを発生させると、このデータベースから取得している会話イベントの情報を利用して表示を行う
これが
DataBaseManager クラスの役割になります。
各クラスごとの役割を明確に分担しておくことで設計を作りやすくし、管理もしやすくなりますので、是非心がけてください。