エディタウインドウ作成方法をよく忘れるのでメモ
クラスを定義する
Assets フォルダの下に Editor フォルダ を作成し、この下にスクリプトを作成します。
using UnityEngine; using UnityEditor; // 必要! public class EditorTest : EditorWindow { }
先頭に using UnityEditor; を追加し、EditorWindow クラスを継承させます。
Start関数は不要ですが、Updateは呼ばれるので残しておいてもいいです。
ウインドウを表示するための関数を定義
MenuItem属性をつけたstatic関数を定義することで、Unityのメニューからウインドウを呼び出せます。
public class EditorTest : EditorWindow { [MenuItem ("Window/ShowMyEditor")] // ShowMyEditor部分は好きな文字列でよし static void ShowWindow () { // ウインドウを取得 EditorTest window = (EditorTest)EditorWindow.GetWindow (typeof (EditorTest)); // 表示 window.Show(); } }
表示させたウインドウはこんなかんじ
ここにGUIを乗せていきます。
OnGUIにレイアウトを書く
同じような機能のPropertyDrawerと違い、EditorGUILayout クラスで比較的に楽にレイアウトを行うことができます。
int intVal; float floatVal; string text; Object obj; void OnGUI() { // 数値フィールド intVal = EditorGUILayout.IntField("数値型", intVal); // floatスライダー floatVal = EditorGUILayout.Slider("スライダー", floatVal, 0, 2); // テキスト(改行可、最小高さ50px) text = EditorGUILayout.TextArea(text, new GUILayoutOption[] { GUILayout.MinHeight(50) }); // オブジェクト(シーン内オブジェクト不可) obj = EditorGUILayout.ObjectField("プレハブ指定", obj, typeof(GameObject), false); }