もくじへ
ゲーム上で使用してみる
ここでは作成したScriptableObjectInstanceの値を実際にゲーム上に反映する方法について記載します。
例としての表示になるため、ごく簡単な使用方法を記載します。
本来であれば、Addressablesを使用して動的にロードするなどの実装になるかと思いますが、ここではSingletonなゲームオブジェクトを用意し、そこにScriptableObjectへの参照を設定する方法で記載します。
MasterDataHolderを作成する
マスターデータを常時保持しておくMasterDataHolder(クラス名は何でもOK)を作ります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using CatHut;
public class MasterDataHolder : SingletonMonoBehaviour<MasterDataHolder>
{
public Player PlayerData;
}
これを作成したら適当なコンポーネントにアタッチします。
コンパイルが終わると下図のようにPlayerDataの項目が表示されると思うので、右側のポチをクリックして、表示されるであろうアセットをクリックします。
Playerアセットをクリックして設定します。
ここに表示されない場合はアセットが作成されていないなど何かおかしい状況です。
エラーなどが出ていない状況であれば、一度CSVを変更するなどで、再度インポートを走らせてみてください。
Tools > CatHut > AnankeCsvMaster > Import All CsvをクリックするとDataPathsに保存されているCSVを全てインポートし直すので、こちらを使用するでも問題ありません。
データを参照する側の記述
MasterDataHolder を使用する場合、他のクラスからマスターデータにアクセスするには下記のように記述します。
Dictionary形式で保持されているため、
GroupNameData.DataSetNameData[id].プロパティ名 でアクセスします。
また、プロパティ名はインデクサを使用して文字列で指定することもできますが、この場合はキャストをしてやる必要があります。
下記のような形です。
// Duplicatable = false の場合
// [key].Property
var temp01 = MasterDataHolder.Instance.PlayerData.CharacterData["p001"].Name;
// access by PropertyName
var temp02 = MasterDataHolder.Instance.PlayerData.CharacterData["p001"]["Name"] as string;
注意点
前述のようにMonoBehaviourのフィールドとして設定すると簡単に参照できますが、Instanceを削除したりすると当然リンクが切れるので、やはりAddressables等を利用して、安全にロードできる仕組みを作っておいた方がよいかと思います。
さいごに
AnankeMasterDataの基本的な使用法は以上となります。
次以降は少し発展した使い方の解説になりますので、必要な方やある程度理解が進んだ方にご参照いただければと思います。
次へ
応用編
コメント