UnityのUI Toolkitで、EditorWindowにInspectorを表示する方法についてまとめました。
Unity2021.3.16f1
やりたいこと
HierarchyからGameObjectを選択すると、そのGameObjectにアタッチされているコンポーネントがInspectorウィンドウに表示されます。

本記事では、UI Toolkitを使ってこのInspectorを自分で作ったEditorWindow上に表示して編集できるようにする方法についてまとめます。
実装
これを実装するにはInspectorElementクラスに対象のコンポーネントを渡し、このInspectorElementを親のUI要素にAddするだけです。
以下は選択中のオブジェクトにCameraコンポーネントがアタッチされていたらそのInspectorをEditorWindowに表示する例です。
using UnityEditor; using UnityEditor.UIElements; using UnityEngine; public sealed class InspectorWindow : EditorWindow { public void OnEnable() { Selection.selectionChanged += OnSelectionChanged; } [MenuItem("Window/InspectorWindow")] private static void ShowDefaultWindow() { GetWindow<InspectorWindow>(); } private void OnSelectionChanged() { var component = Selection.activeGameObject?.GetComponent<Camera>(); if (component == null) return; rootVisualElement.Clear(); var inspector = new InspectorElement(component); rootVisualElement.Add(inspector); } }
結果
Window > InspectorWindowからこのウィンドウを開いてCameraを選択すると以下のようにInspectorの内容が表示されることを確認できます。
