【Unity】【エディタ拡張】開かれているEditorWindowを取得する

開かれているEditorWindowを取得する方法です。

ソースコード

まずクラスにアクセスできる場合は次のようにして取得します。

var window = EditorWindow.GetWindow(typeof(UnityEditor.SceneView));

内部クラスとして定義されているWindowにアクセスする場合は、次のようにリフレクションを使う必要があります。

var window = EditorWindow.GetWindow(typeof(EditorWindow).Assembly.GetType("UnityEditor.GameView"));

全エディタウィンドウの型を取得する

Unityで定義されているEditorWindowの型をすべて取得するには次のようにします。

[MenuItem("Tools/Show All Window Names")]
private static void ShowAllWindowNames()
{
    var windowNames = System.AppDomain.CurrentDomain
        .GetAssemblies()
        .SelectMany(assembly => assembly.GetTypes())
        .Where(assembly => assembly.IsSubclassOf(typeof(EditorWindow)))
        .Select(assembly => assembly.FullName)
        .ToArray();

    foreach (var windowName in windowNames) {
        Debug.Log(windowName);
    }
}

参考

baba-s.hatenablog.com

baba-s.hatenablog.com