読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU

Unityエディタウインドウを自作する

{スポンサーリンク}
{スポンサーリンク}

エディタウインドウ作成方法をよく忘れるのでメモ

クラスを定義する

Assets フォルダの下に Editor フォルダ を作成し、この下にスクリプトを作成します。

f:id:sugar_affordance:20170519101937p:plain

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();
    }

}

f:id:sugar_affordance:20170519102024j:plain

表示させたウインドウはこんなかんじ

f:id:sugar_affordance:20170519102037p:plain

ここにGUIを乗せていきます。

OnGUIにレイアウトを書く

同じような機能のPropertyDrawerと違い、EditorGUILayout クラスで比較的に楽にレイアウトを行うことができます。

    int intVal;
    float floatVal;
    string text;
    Object obj;

    void OnGUI() {

        // 数値フィールド
        intVal = EditorGUILayout.IntField("数値型", intVal);

        // floatスライダー
        floatVal = EditorGUILayout.Slider("スライダー", floatVal, 02);

        // テキスト(改行可、最小高さ50px)
        text = EditorGUILayout.TextArea(text, new GUILayoutOption[] {
            GUILayout.MinHeight(50)
        });

        // オブジェクト(シーン内オブジェクト不可)
        obj = EditorGUILayout.ObjectField("プレハブ指定", obj, typeof(GameObject), false);
    } 

Unity - スクリプトリファレンス: EditorWindow

Amazon.co.jpアソシエイト