本記事で解決できること
- 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;
// 他のコード
}
この例では、moveSpeed
とplayerHealth
という変数に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、どちらを使っても大差ないように思いますが、複数人で開発をするときは、意識した方が良さそうです。
インスペクターの表示をさらに見やすく効率的に使いたい方は、こちらのアセットがおすすめです。