MRが楽しい

MRやVRについて学習したことを書き残す

UnityのInspectorビューに自作のデータ形式を表示する

本日はUnityの小ネタ枠です。
UnityのInspectorビューに自作のデータ形式(struct, class, record)を表示する方法についてです。

カスタム製のシリアル化

[System.Serializable]属性を利用することで自作のデータ形式をシリアル化することができます。
これにより、Unityがサポートしていない形式のデータをInspectorビュー上から確認・編集することができます。
docs.unity3d.com
docs.unity3d.com

サンプルスクリプト

以下の[System.Serializable]属性を設定した自作のデータ形式を用意しました。
・HumanEntity.cs

// カスタムクラスをシリアライズする
[System.Serializable]
public record HumanEntity
{
    // 名前
    public string Name;
    
    // 年齢
    public int Age;
}

カスタムクラスをプロパティで保持するMonoBehaviourを作成して動作を確認します。
・InspectorSerializeTest.cs

using UnityEngine;

public class InspectorSerializeTest : MonoBehaviour
{
    // カスタムクラス
    [SerializeField] HumanEntity _humanEntity;
    
    void Start()
    {
        _humanEntity = new HumanEntity{ Name = "太郎", Age = 20, };
    }
}

以下の通り、カスタムクラスの情報をInspectorビューから参照できるようになりました。