UnityにはComponentsという概念があるが、そこにパラメーターを書いていくとデバッグや難易度調整する時に不便なことがある。ゲームオブジェクトが少ない場合は対応できるが、数が増えてくるとどこになんのパラメータの設定があるのかわからなくなる。
難易度調整する時は数値を一覧で管理して、それを調整しながら遊んでいく方が効率的だ。
ScriptableObjectを使ってパラメータを管理とは。
やりたいことはGameを動かしながらこんなかんじでパラメータをいじることができるようになること。
また、通常Unityは実行中のComponentsの値変更は停止した時に元に戻るが、このScriptableObjectでは値を保持するので便利。
また値もテキストデータとして管理されているのでさらに便利。
元になるCSファイルを作成
[CreateAssetMenu(fileName = "TitleScene_PM", menuName = "TitleScene_PM")]
public class TitleScene_PM : ScriptableObject
{
public int test; //好きなパラメータを設定する。
}
CreateAssetMenuでUnityの右クリックメニューに追加し、ScriptableObjectの継承するのがきも。
そうするとUnityの右クリック>Create>設定した名前(TitleScene_PM)が追加される。
private TitleScene_PM titleScene_PM;
private void Start()
{
//パラメータクラスを読み込む
TitleScene_PM = Resources.Load<GameSceneParameter>("TitleScene_PM");
//パラメータを使用する
TitleScene_PM.test
}
これで準備は完了。
あとはResoucesからクラスを読み込み使用する。
パラメータクラスはクラスや構造体でまとめるとわかりやすい。
[Range(0, 5)]
public int Sampcount;