本日はUnityの小ネタ枠です。
SerializeField属性またはHideInInspector属性を使ってフィールドをInspector上に表示する方法です。
SerializeField属性
SerializeField属性はprivateフィールドを強制的にシリアライズします。
これにより、privateフィールドでもInspectorビュー上で値を設定できるようになります。
docs.unity3d.com
using UnityEngine; public class SerializeTest : MonoBehaviour { // privateフィールドはInspector上で表示されない private string privateField; // SerializeField属性を付与するとprivateフィールドでもInspector上で表示される [SerializeField] private string serializeField; // 実行処理 }
HideInInspector属性
HideInInspector属性はpublicフィールドをInspectorビュー上に表示しないようにします。
docs.unity3d.com
またはSystem.NonSerialized属性を使ってpublicフィールドをシリアライズしないことでInspectorビュー上に表示しないようにできます。
docs.unity3d.com
using UnityEngine; public class NonSerializeTest : MonoBehaviour { // publicフィールドはシリアライズされてInspector上で表示される public string publicField; // HideInInspector属性を付与するとシリアライズされるがInspector上では表示されない [HideInInspector] public string hideInInspectorField; // NonSerialized属性を付与するとシリアライズされないためInspector上で表示されない [System.NonSerialized] private string nonSerializeField; // 実行処理 }
HideInInspector属性とSystem.NonSerialized属性の違い
HideInInspector属性はフィールドを非表示にするだけなので何らかの形で値を一度入力すると値を保持し続けます。
System.NonSerialized属性はシリアライズされないため、値を保持し続けません。