Unityの[SerializeField]について
Unityの変数(フィールド)に[SerializeField]をつけることでインスペクタに数値を表示し編集できるようになるものです。詳しくは下記公式へ
公式:スクリプトのシリアル化
//[SerializeField]を利用したシリアル化
[SerializeField] private int num1;
//publicを利用したシリアル化
public int num2;
シリアル化をするには主にpublic変数にするか変数に[SerializeField]をつけることでシリアル化できます。
public変数の表示を非表示にしたい場合
public変数に[HideInInspector]をつけることでインスペクタに非表示にできます。
//publicだが非表示化
[HideInInspector] public int num3;
デバッグモードによる表示
デバッグモードにすることで変数の内容を確認するとはできますが編集を行うことはできないです。
右上の点が3つの所を押下しメニューが開くのでデバッグを選択することで内容を表示することができます。
プロパティのシリアル化について
プロパティのシリアル化は[field: SerializeField]をつけることで表示、編集できるようになります。
//プロパティのシリアル化
[field: SerializeField] public int num4 { get; private set; }
※プロパティを使う点でアクセス制限をかけることができるのはもちろんなのですが便利な機能として「Visual Studio」に限りますがアクセスしている回数、箇所が確認できる事です。
自作クラスのシリアル化について
自作クラスのシリアル化は[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;
下の画像のような形でポップアップが出せるので使っています。
コメント
omnis et est reiciendis cum ratione saepe qui enim iure voluptas qui cupiditate eos omnis harum et id. pariatur ut laboriosam id fugiat. quaerat minima et at exercitationem eum ullam perferendis harum error et tempore et totam magni ullam itaque rerum.