いんでぃーづ

ゲームいろいろ、いろいろ自由

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

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


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。