Categories: Unity

【Unity】クラスのパラメータをインスペクターから調整したい

この記事では、定義したクラスをインスペクター上で調整できるようにします。

今回は適当なクラス(Person)を定義し、これまた適当なクラス(Test)に参照を持たせてインスペクターから調整できるようにします。

このようにデータやそのデータに対しての処理を別クラスにまとめておくことでごちゃごちゃにならず、見やすくわかりやすいスクリプトにすることができます。

それでは、インスペクター上で調整できるクラスの定義の仕方を見ていきましょう!

結論: [System.Serializable]を付与する

クラスに[System.Serializable]を付与することでインスペクター上でパラメータ調整をすることができるようになります。

先ほどの画像のPersonクラスは以下のような感じで定義されています。

using UnityEngine;

// インスペクターから調整したいクラス
[System.Serializable]
class Person 
{
    public string name;

    [SerializeField]
    private int age;

    private bool gender;
}

public class Test : MonoBehaviour
{
    // [SerializeField] や public にしておく
    [SerializeField]
    private Person person;

}

ポイントとしては以下の3つです。

  • インスペクター上で調整したいクラスに[System.Serializable]付与する
  • 調整したいパラメータ(ここではPersonクラスのフィールド変数)には public、または[SerializeField]を付与
  • 調整するクラスの参照(ここではTestクラスのperson変数)にもpublic、または[SerializeField]を付与

このように定義することでPersonクラスの参照(public[SerializeField]が付与されている場合)は、インスペクター上から調整することができます。

まとめ

この記事では、定義したクラスを参照に受け取った際にインスペクター上から調整できるようにしました。

ResourcesやDIコンテナを使ってももちろん良いですが、インスペクター上から調整できるのは簡単だしわかりやすくていいですよね!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago