RailPathData クラスの宣言フィールドにおいて、別のクラスを作成しています。今回は PathDataDetail クラスです。
C# では、1つの独立したクラス(ファイル)としてではなく、
あるクラスの中の宣言フィールドに別のクラスを作成しても使用することができます。
このような構造を
入れ子(ネスト)クラスと言います。
public class RailPathData : MonoBehaviour {
// RailPathData クラスの宣言フィールド
[System.Serializable]
public class PathDataDetail {
// PathDataDetail クラスの宣言フィールド
[Tooltip("移動時間")]
public float railMoveDuration;
[Tooltip("移動地点とカメラの角度")]
public Transform pathTran;
[Tooltip("ミッションの発生有無。オンで発生")]
public bool isMissionTrigger;
}
// ここからまた、RailPathData クラスの宣言フィールド
[Header("経路用のパスデータ群")]
public PathDataDetail[] pathDataDetails;
特定のクラスでのみ使用することが確定しているような、
使用範囲の狭いクラスであれば、このように入れ子クラスにした方がスクリプト・ファイルが増えずに済みます。
また設計上、
ファイルにはしたくない(隠しておきたい)クラスを作成する場合にも用いられます。
使用方法は他のクラスと同じです。ただし参照する場合は、
RailPathData.PathDataDetail という書式で、
入れ子クラスのあるクラスの後に、入れ子クラスを順番に記述します。
入れ子のクラスは[System.Serializable] 属性を付与しておくと、インスペクター上に表示させたり、別のオブジェクトに変換することが出来るようになります。
入れ子にできるクラスの数に制限はありませんが、構造が深くなりすぎると処理を追うのが大変になります。
設計を考えて入れ子クラスにするか、1つのファイルとしてクラスを作成するかを検討していくことが大切です。