読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

Unityのインスペクターをハックしよう:初級編

Tips Unity

今回はスクリプトを書いたときの、インスペクタと連携を取る上でのあるあるを。

インスペクタから設定しない 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;

}

インスペクタ上では下図のように表示されます。

f:id:sugar_affordance:20150226142040p:plain

定義したクラスのメンバ変数は、インスペクタに表示できる型でなければならないので注意しましょう。

Amazon.co.jpアソシエイト