はかせのラボ

私の頭の中を書いていく雑記ブログです

Unity インスペクター上からprivate変数を弄る方法

あいさつ

どうも、はかせです。
今回もUnityTips記事です。
今回のTipsはUnityでインスペクター上から弄りたい変数なんだけど
他のクラスから弄られたくないときに使えるものの紹介です。

[SerializeField]

これは属性といわれるものの一つで
この宣言を先頭にした変数はインスペクター上に公開されます。
宣言した時としなかった時のインスペクターを見てみましょう。
まずは宣言しなかった時のスクリプトとインスペクターです。

public class TestScript : MonoBehaviour
{
    private int mTestInt;
}

f:id:hakase0274:20190407212631p:plain

次に宣言した時のスクリプトとインスペクターです。

public class TestScript : MonoBehaviour
{
    [SerializeField]
    private int mTestInt;
}

f:id:hakase0274:20190407212756p:plain
[SerializeField]宣言した変数がインスペクター上に出ています。
この欄に変数に代入したい値を入力することで
インスペクター上からprivate変数を弄ることが出来ます。

ちなみに

public class TestScript : MonoBehaviour
{
    [SerializeField]private int mTestInt;
}

こう書いても問題なく動きます。
これは好みです。

あとがき

今回はUnityの[SerializeField]紹介でした。
私はpublicで外部に弄られたくないがちょこちょこ変える値(操作感度とか)
この属性を付けます。

まぁ個人や小規模開発ならpublicで書いちゃってもいい気がしますが
[SerializeField]つけると「この値はインスペクター上から弄る」という意思表示になって
後から読むとき気持ち楽になります。

それでは今回はこの辺でノシ