Unity - Inspector を整理するためにエディタAPIを使用する -
初めに
Inspector を整理する方法として、エディタAPIをし、EditorGUILayout を利用する方法があります。その方法をまとめます。
エディタAPIを使用する手順
エディタAPIを使用するための手順は以下になります。
今回は "InspectorScript" という名前のスクリプトの Inspector を "InspectorEditor" という名前のスクリプトで整理します。"InspectorEditor" が Editor フォルダに入れるスクリプトになります。
EditorGUILayout を使い、いろいろ追加する
EditorGUILayout を利用することでいろいろ追加できます。
いくつかピックアップして追加するスクリプトを乗せておきます。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; //()の中にクラス名を入力 //今回は InspectorScript と記入 [CustomEditor(typeof(InspectorScript))] public class InspectorEditor : Editor { //OnInspectorGUIでカスタマイズのGUIに変更する public override void OnInspectorGUI() { //元のInspector部分(InspectorScriptのInspector)を表示する base.OnInspectorGUI(); //スペースを追加 GUILayout.Space(20); //元のInspector部分の下に表示 //ボタンを表示 if (GUILayout.Button("ボタン")) { Debug.Log("ボタンを押したよ"); } //ポップアップの追加 string[] options = new string[] {"Hp", "Mp", "Attack"}; //EditorGUILayout.Popup(int, string[]); //第1引数は最初に表示するポップアップの string //第2引数はポップアップに表示する文字列 EditorGUILayout.Popup(0, options); //Toggleの追加 //第1引数は表示するText //第2引数は初期値がtrueかfalseか EditorGUILayout.Toggle("Toggle", true); //カラーを追加 EditorGUILayout.ColorField("カラー", Color.white); //Vector3 を入力する X 、 Y と Z のフィールドを追加 EditorGUILayout.Vector3Field("Vector3", Vector3Int.zero); } }
(結果)
Name は元のスクリプト(InspectorScript)に記述していたものになります。base.OnInspectorGUI(); を消すと、表示されないくなります。
他にも TextArea や Slider などさまざまなものを追加できます。下記リンク先に一覧がありますので、そちらを参照してください。なお、それぞれの Static 関数をクリックするとそれぞれの説明が見れます。引数などが分からない場合はそちらをご覧ください。
docs.unity3d.com
Inspector の項目ごとに色を変える
色を変える方法は3つあります。
GUI.backgroundColor は背景色だけ、GUI.contentColor はアイコンなどの色だけ、GUI.color は全部の色を設定します。
(GUI.color)
GUI.color = Color.red; EditorGUILayout.TextField("Text1", "全部");
(GUI.backgroundColor)
GUI.backgroundColor = Color.green; EditorGUILayout.TextField("Text1", "背景色のみ");
(GUI.contentColor)
GUI.contentColor = Color.green; EditorGUILayout.TextField("Text1", "中身のみ");
自分が見やすいものを使用しましょう。