Unity 独自クラスをScritableObjectで編集できるようにする。

ValueObjectライクにクラスを使いたかったので、フィールドを独自クラスにしたかった。

だけど、独自クラスだとインスペクタから値を変えれなかった。 調べると"[Serializable]"を使えばできるようなのでメモ。

下記のように独自クラスに"[System.Serializable]"を割り当てて さらに中のフィールドに"[SerializeField]"かpublicにすれば独自クラスもインスペクタから編集できるようになる。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class MyClass
{
    [SerializeField] private int id = 0;
    [SerializeField] private string name = "";

    public int Id { get; }
    public int Name { get; }

    public MyClass(MyClass object)
    {
        Id = object.Id;
        Name = object.Name;
    }
}