Scriptable ObjectをEditor拡張して使いやすくする方法

Uncategorized

Scriptable ObjectのInspector上にボタンを出してみる
まずはScriptable Objectのコードを作成する

[Serializable]
public class Sample
{
    public int id;
    public string name;
}

[CreateAssetMenu(fileName = "SampleData", menuName = "Karin/SampleData")]
public class SampleData : ScriptableObject
{
    [SerializeField]
    private List<Sample> list;
    public List<Sample> List => list;

    public Sample GetValue(int id)
    {
        var value = list.Find(it => it.id == id);
        return value;
    }

    public int Count()
    {
        return list.Count;
    }
}

続いて、このScriptable Objectの拡張コードを作成する
ファイル名は上記のScriptable Objectのクラス名+Editorが推奨されている
このファイルは、Editor以下に格納すること
Editorフォルダの場所はどこでも良い

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(SampleData))]
public class SampleDataEditor : Editor
{
    private SampleData m_target;

    private void OnEnable()
    {
        m_target = (SampleData)target;
    }

    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("ボタン"))
        {
            var value = m_target.GetValue(1);
            Debug.Log(value.name);
        }
    }
}

[CustomEditor(typeof(SampleData))]で拡張するスクリプトを指定している
GUILayout.Button(“ボタン”)でボタンを作成

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