LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

Unity 2020から自動実装プロパティのバッキングフィールドにSerializeField属性をつけるとプロパティ名が表示される

PONOS Advent Calendar 2020の10日目の記事です。
昨日は@kerimekaさんの【Android】root判定によるチート対策でした。


Unity 2019以前

C# 7.3から自動実装プロパティのバッキングフィールドに属性をつけられるようになりましたが、SerializeField属性をつけるとInspectorの表示が残念なことになってました。

public class Sample : MonoBehaviour
{
    [field: SerializeField]
    public int ValueA { get; private set; }
}

こう書くと
property-backing-field-2019.png
こう表示されてしまう。

ラベルだけ上書きするPropertyDrawerを自作したら使い勝手が良くなりそうな気がしますが、実際はうまくいきません。
そのあたりは下記の記事で説明されています。
Unityで自動実装プロパティに表示名を指定する

Unity 2020

2020からは

public class Sample
{
    [field: SerializeField]
    public int ValueA { get; private set; }
}

と書くと
property-backing-field.png
こう表示されるようになりました。

ちなみに表示名はプロパティ名ですがyamlに保存されるのはバッキングフィールドの名前です。
sample-prefab-yaml.png

結論

Unity 2020から自動実装プロパティのバッキングフィールドにSerializeField属性をつけるとプロパティ名がいい感じに表示されるようになりました🎉


本当はInspectorでいい感じに表示する拡張を公開する予定だったのですが、2020でチェックしていたところ何もしなくてもプロパティ名が表示されたのでやめました。


明日は@kenta-sanです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0