【Unity】SerializeFieldとは?Publicとの違いについて解説!

本記事で解決できること

  • SerializeFieldとは?
  • SerializeFieldとPublicの違い、使い分け

Unityでゲーム開発をする際によく使用するSerializeFieldについて解説します!

Unityを学ぶ本や動画によって、public とSerializeFieldが同じように使われていて、何が違うのか特に意識せずに使っている人もいると思います。そこについても解説します。

SerializeFieldとは?

SerializeFieldは、Unityで使われる属性(Attribute)の一つであり、変数やプロパティをUnityのInspectorウィンドウに表示可能にするためのものです。SerializeFieldを使うことで、プログラマーはゲームオブジェクトやコンポーネントのプロパティを直接編集することなく、簡単に調整できるようになります。

SerializeFieldの基本的な使い方

SerializeFieldを使用するには、Unityスクリプト内の変数やプロパティの前に[SerializeField]という属性を付けるだけです。例えば、以下のようなコードを考えてみましょう。

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    [SerializeField] float moveSpeed = 5f;

    [SerializeField] int playerHealth = 100;

    // 他のコード
}

この例では、moveSpeedplayerHealthという変数にSerializeFieldをつけています。これにより、UnityのInspectorウィンドウ上でこれらの変数の値を調整できるようになります。

SerializeFieldのメリットとは何か

SerializeFieldの最大のメリットは、プログラマーがコード内で変数を定義するだけで、その変数をInspector上で編集できるようになることです。これにより、値の調整やテストが非常に容易になります。

SerializeFieldとPublicの違い

異なる点

  • public 他のスクリプトから変更できる
  • SerializeField 他のスクリプトから変更できない

どちらもインスペクター上では変更できますが、スクリプトから変更できるかどうかの違いです。

SerializeFieldのパラメーターは他のスクリプトから参照できないので、他で使う予定がない場合はSerializeFieldを使いうのが良いです。

実際に確認

public と SerializeField のパラメーターをそれぞれ用意します

public class test : MonoBehaviour
{
    public int PublicNum = 0;
    [SerializeField] int SerializeNum = 0;
}

別のスクリプトを用意し、参照できるかを確認してみると、SerializeFieldの参照ができないエラーが出てきます。

まとめ

1人で簡単なゲームを開発する分には、SerializeFieldとPublic、どちらを使っても大差ないように思いますが、複数人で開発をするときは、意識した方が良さそうです。

インスペクターの表示をさらに見やすく効率的に使いたい方は、こちらのアセットがおすすめです。

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