【Unity】【エディタ拡張】カスタムエディタウィンドウ用コードテンプレート

自分用メモ。 随時更新。

ソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class BasicWindow : EditorWindow {

    [MenuItem("Window/Basic Window")]
    private static void Open()
    {
        var window = GetWindow<BasicWindow>("Basic Window");
    }

    private void OnEnable()
    {
        EditorApplication.playmodeStateChanged += OnChangePlayMode;
    }

    private void OnDisable()
    {
        EditorApplication.playmodeStateChanged -= OnChangePlayMode;
    }

    private void OnChangePlayMode(){

    }

    private void OnGUI()
    {
        DrawToolbar();
    }

    /// <summary>
    /// ツールバーを描画する
    /// </summary>
    private void DrawToolbar()
    {
        using (new EditorGUILayout.HorizontalScope(EditorStyles.toolbar, GUILayout.ExpandWidth(true))) {
            GUILayout.Button("button", EditorStyles.toolbarButton);
            GUILayout.Toggle(true, "toggle", EditorStyles.toolbarButton);
            EditorGUILayout.IntPopup( 0, new string[] { "popup" }, new int[] { 0 }, EditorStyles.toolbarPopup);
            EditorGUILayout.IntPopup( 0, new string[] { "dropdown" }, new int[] { 0 }, EditorStyles.toolbarDropDown);
            EditorGUILayout.TextField( "", EditorStyles.toolbarTextField, GUILayout.Width( 150 ) );
        }
    }

    /// <summary>
    /// Selectionが切り替わった時に呼ばれる
    /// </summary>
    private void OnSelectionChange()
    {
        Debug.Log(Selection.activeObject);

            // 表示内容を変更し、即座に反映したい場合にはRepaint()
            Repaint();
    }

    private void Update()
    {
        // 他のwindowがフォーカスされているときの処理
        if (focusedWindow.titleContent.text == "Hierarchy") {
        }
    }
}

結果

f:id:halya_11:20180223124509p:plain