【Unity】【エディタ拡張】シーンビューにウィンドウを表示する

シーンビューにIMGUIのウィンドウを表示する方法です。

ソースコード

using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;

public class SampleSceneEditWindow {

    private static Rect _windowSize = new Rect(8, 24, 300, 100);
    private static bool _enabled = false;
    
    // スクリプトロード時に呼ばれる
    [InitializeOnLoadMethod]
    private static void SampleSceneEdit(){
        SceneView.onSceneGUIDelegate += OnSceneGUI;
    }
    
    private static void OnSceneGUI(SceneView sceneView){
        if (!GetIsTargetScene()) {
            return;
        }
        GUILayout.Window(1, _windowSize, DrawWindow, "Sample Window");
    }
    
    public static void DrawWindow(int id)
    {
        EditorGUILayout.LabelField("Sample");
    }

    private static bool GetIsTargetScene()
    {
        return SceneManager.GetActiveScene().name.Contains("sample_");
    }
}

説明はコメントを見てください

結果

f:id:halya_11:20180525155801p:plain

このようにウィンドウを表示できます。