うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】EditorWindow が開かれているかを判定する

using UnityEditor;
using UnityEngine;
 
public static class EditorWindowUtil
{
    /// <summary>
    /// Editor Window がすでに開かれているかどうか
    /// </summary>
    public static bool IsOpen<T>() where T : EditorWindow
    {
        var findObjects = Resources.FindObjectsOfTypeAll<T>();
        return findObjects.Length > 0;
    }
 
    /// <summary>
    /// Editor Window が開いてあれば開いてあるものを
    /// 開いてなければ開く
    /// </summary>
    public static T GetWindow<T>() where T : EditorWindow
    {
        var findObjects = Resources.FindObjectsOfTypeAll<T>();
        return findObjects.Length > 0 ? findObjects[0] as T : EditorWindow.GetWindow(typeof(T)) as T;
    }
}