Unityの[SerializeField]の使い方について

Unity
スポンサーリンク

Unityの[SerializeField]について

Unityの変数(フィールド)に[SerializeField]をつけることでインスペクタに数値を表示し編集できるようになるものです。詳しくは下記公式へ

公式:SerializeField

公式:スクリプトのシリアル化

//[SerializeField]を利用したシリアル化
[SerializeField] private int num1;

//publicを利用したシリアル化
public int num2;

シリアル化をするには主にpublic変数にするか変数に[SerializeField]をつけることでシリアル化できます。

public変数の表示を非表示にしたい場合

public変数に[HideInInspector]をつけることでインスペクタに非表示にできます。

//publicだが非表示化
[HideInInspector] public int num3;

公式:HideInInspector

デバッグモードによる表示

デバッグモードにすることで変数の内容を確認するとはできますが編集を行うことはできないです。

右上の点が3つの所を押下しメニューが開くのでデバッグを選択することで内容を表示することができます。

プロパティのシリアル化について

プロパティのシリアル化は[field: SerializeField]をつけることで表示、編集できるようになります。

//プロパティのシリアル化
[field: SerializeField] public int num4 { get; private set; }

※プロパティを使う点でアクセス制限をかけることができるのはもちろんなのですが便利な機能として「Visual Studio」に限りますがアクセスしている回数、箇所が確認できる事です。

19行目と20行目の間に参照回数の表示が出る
参照の部分をクリックすることで呼ばれている場所の表示とクリックすることで呼ばれている場所にジャンプできる

自作クラスのシリアル化について

自作クラスのシリアル化は[System.Serializable]をつけ変数宣言の部分にも[SerializeField]をつけることで表示、編集できるようになります。

公式:Serializable

//変数宣言
public class NumScript : MonoBehaviour
{
    //シリアル化されてない変数
    private int num;

    //[SerializeField]を利用したシリアル化
    [SerializeField] private int num1;

    //publicを利用したシリアル化
    public int num2;

    //publicだが非表示化
  [HideInInspector] public int num3;

    //プロパティのシリアル化
    [field: SerializeField] public int num4 { get; private set; }

  //自作クラスのシリアル化
    [SerializeField] private StatusClass status = new StatusClass();

    //...
}

//Class宣言
[System.Serializable]
public class StatusClass
{
    public string name;
    public int hp;
}

余談(Tooltipについて)

属性として1つとして便利なのが[Tooltip]です![Tooltip]は説明文みたいなもので「Unity」側と「Visual Studio」で説明文をポップアップで出せます!

ドキュメントコメントもあるのですが自分は[Tooltip]を使っています。

※正解はないので臨機応変でお願いします。

書き方は下記みたいな形で記入します。

[Tooltip("5番目の数字"),SerializeField] private int num5;

下の画像のような形でポップアップが出せるので使っています。

[Visual Studio]側でカーソルを合わせた場合
[Unity]側でカーソルを合わせた場合

コメント

タイトルとURLをコピーしました