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の内容が表示されることを確認できます。