いんでぃーづ

ゲームいろいろ、いろいろ自由

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


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。