1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gameのパラメータ管理(ScriptableObjectを使用する)

Posted at

UnityにはComponentsという概念があるが、そこにパラメーターを書いていくとデバッグや難易度調整する時に不便なことがある。ゲームオブジェクトが少ない場合は対応できるが、数が増えてくるとどこになんのパラメータの設定があるのかわからなくなる。

難易度調整する時は数値を一覧で管理して、それを調整しながら遊んでいく方が効率的だ。

ScriptableObjectを使ってパラメータを管理とは。

image.png
やりたいことはGameを動かしながらこんなかんじでパラメータをいじることができるようになること。

また、通常Unityは実行中のComponentsの値変更は停止した時に元に戻るが、このScriptableObjectでは値を保持するので便利。
image.png
また値もテキストデータとして管理されているのでさらに便利。

元になるCSファイルを作成

image.png
場所はどこでも良いが、適当なスクリプトを作成する。

    [CreateAssetMenu(fileName = "TitleScene_PM", menuName = "TitleScene_PM")]
    public class TitleScene_PM : ScriptableObject
    {
        public int test; //好きなパラメータを設定する。
    }

CreateAssetMenuでUnityの右クリックメニューに追加し、ScriptableObjectの継承するのがきも。
image.png
そうするとUnityの右クリック>Create>設定した名前(TitleScene_PM)が追加される。

image.png
Resourcesフォルダに追加する。

        private TitleScene_PM titleScene_PM;
        private void Start()
        {
            //パラメータクラスを読み込む
            TitleScene_PM = Resources.Load<GameSceneParameter>("TitleScene_PM");
            //パラメータを使用する
            TitleScene_PM.test
        }

これで準備は完了。
あとはResoucesからクラスを読み込み使用する。
image.png
パラメータクラスはクラスや構造体でまとめるとわかりやすい。
image.png

        [Range(0, 5)]
        public int Sampcount;

Unityではincpector情報を数字以外でコントロールする方法もある。
image.png
こんな感じで線形でコントロールもできる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?