はじめに
絶賛エディタ拡張の勉強をしていて、簡単なものを作ってみたので自分の備忘録として残しておきたいと思います。
コード
SampleDateとSampleDateEditorという2つのスクリプトを作って、SampleDateEditorはEditorフォルダに入れました。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SampleDate : MonoBehaviour { [SerializeField] private bool toggleGroup = false; [SerializeField] private bool flag_0 = false; [SerializeField] private bool flag_1 = false; [SerializeField] private bool flag_2 = false; public bool TouggleGroup { get { return toggleGroup; } set { toggleGroup = value; } } public bool Flag_0 { get { return flag_0; } set { flag_0 = value; } } public bool Flag_1 { get { return flag_1; } set { flag_1 = value; } } public bool Flag_2 { get { return flag_2; } set { flag_2 = value; } } }
using UnityEngine; using System.Collections; using UnityEditor; [CustomEditor(typeof(SampleDate))] public class SampleDateEditor : Editor { public override void OnInspectorGUI() { // シリアライズオブジェクトの更新 serializedObject.Update(); // targetでデータを取得しキャスト SampleDate sampleData = target as SampleDate; EditorGUILayout.BeginHorizontal(); sampleData.TouggleGroup = EditorGUILayout.BeginToggleGroup("Toggle Group", sampleData.TouggleGroup); sampleData.Flag_0 = EditorGUILayout.Toggle("Flag 0", sampleData.Flag_0); sampleData.Flag_1 = EditorGUILayout.Toggle("Flag 1", sampleData.Flag_1); sampleData.Flag_2 = EditorGUILayout.Toggle("Flag 2", sampleData.Flag_2); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndHorizontal(); if (!sampleData.Flag_0 && !sampleData.Flag_1 && !sampleData.Flag_2) { if (GUILayout.Button("すべてのフラグを真にする")) { sampleData.Flag_0 = true; sampleData.Flag_1 = true; sampleData.Flag_2 = true; } } else { if (GUILayout.Button("すべてのフラグを偽にする")) { sampleData.Flag_0 = false; sampleData.Flag_1 = false; sampleData.Flag_2 = false; } } // シリアライズオブジェクトのプロパティの変更を更新 serializedObject.ApplyModifiedProperties(); } }
さいごに
もっと勉強して自分なりのエディタにカスタマイズがいずれ出来たらなと思います!