今回はスクリプトを書いたときの、インスペクタと連携を取る上でのあるあるを。
インスペクタから設定しない public 変数が邪魔
メンバ変数に public 属性を指定すると、インスペクタに入力項目として表示されてしまいます。
他のスクリプトから値を設定したいけど、インスペクタからは設定しない。という状況がよくあるので、その場合は HideInInspectorを指定しましょう。
public class TestScript : MonoBehaviour { [HideInInspector] public int hideProperty; void Start () { } void Update () { } }
これでインスペクタに表示されなくなります。
private 変数をインスペクタから設定したい
逆に、public にしたくないけどインスペクタから設定したい、という場合は、SerializeFieldを指定します。
public class TestScript : MonoBehaviour { [SerializeField] private int exposeProperty; void Start () { } void Update () { } }
独自クラス変数をインスペクタから設定したい
自分で定義したクラスをインスペクタに表示することもできます。
クラス定義に Serializable を指定しましょう。
public class TestScript : MonoBehaviour { [System.Serializable] public class MyClass { public int property1; public bool property2; public Vector3 property3; } public MyClass seriasezedProperty; }
インスペクタ上では下図のように表示されます。
定義したクラスのメンバ変数は、インスペクタに表示できる型でなければならないので注意しましょう。