#概要
Preferencesウィンドウをちょこちょこいじる為、Preferencesウィンドウを常に表示しておきたいのですが、
普通に開くとドッキングできないフローティングウィンドウとして開かれるため、常に開いておくと少し邪魔な感じがします。
SceneViewやInspectorのように、ドッキング可能なウィンドウとして開けないかと試してみました。
#Preferencesウィンドウのクラス名は…
EditorWindowであれば、クラス名がわかれば
EditorWindow.GetWindow
を使って、ドッキング可能なウィンドウとして開くことができるのでは、と考えました。
幸い、フォーカスしているウィンドウ、もしくはマウスオーバーしたウィンドウのクラスを調べられるものがEditorWindowにあるため、
これを利用してクラス名を調べました。
EditorWindow.mouseOverWindow
EditorWindow.focusedWindow
調べてみたところ、UnityEditor.PreferencesWindowと言うクラス名のようです。
#ドッキング可能ウィンドウとして開く
クラス名がわかったので、早速開こう…と思ったのですが、そのまま
EditorWindow.GetWindow(typeof(UnityEditor.PreferencesWindow));
としても、PreferencesWindowが見つからずにエラーになります。
仕方がないので、Reflectionを使用してUnityEditor.PreferencesWindowを取得してウィンドウを開きます。
using UnityEngine;
using UnityEditor;
using System.Reflection;
public class DockablePreferencesWindow : Editor
{
[MenuItem("Window/Open Dockable Preferences")]
static void OpenDockablePreferences()
{
var asm = Assembly.Load("UnityEditor");
var pref_win_type = asm.GetType("UnityEditor.PreferencesWindow");
EditorWindow.GetWindow(pref_win_type, false, "Preferences");
}
}