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(“ボタン”)でボタンを作成
