コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 2018.3 から自動実装プロパティに SerializeField 属性を付与して Inspector に表示できるようになった

概要

公式で意図されたものかどうかはわからないですが

using UnityEngine;

public class Example : MonoBehaviour
{
    [field: SerializeField]
    public int Health { get; private set; }
}

このように自動実装プロパティに SerializeField 属性を付与すると

f:id:baba_s:20181218164633p:plain

その自動実装プロパティが Inspector で編集できるようになります
(正確にはバッキングフィールドが編集できるようになります)
シーンを保存すると編集した値が保存されていることも確認できます

ただし、このままだと Inspector の表示がわかりづらいので

このようなスクリプトを Unity プロジェクトに追加して

using UnityEngine;

public class Example : MonoBehaviour
{
    [field: SerializeField]
    [field: RenameField( "health" )]
    public int Health { get; private set; }
}

このように RenameField 属性を付与することで

f:id:baba_s:20181218165013p:plain

わかりやすい表示にすることができます

参考サイト様

https://forum.unity.com/threads/c-7-3-field-serializefield-support.573988/