Unityで開発をしていると、TransformやAnimationClipなど、Unity標準のコンポーネントやアセットのInspectorを拡張したくなることがあります。
完全に自作してしまえば問題ないのですが、既存の機能はそのままに機能を追加したい場合に、標準のInspector拡張がInternalで隠蔽されているため、継承して追加実装するみたいなことが出来ません。
そのため、既存のInspector拡張より優先されるように新規のInspector拡張を作成して、標準のInspectorGUIをリフレクションを使ってCreateEditorから呼び出すようにします。
既存のInspector拡張より優先させるには、ファイル名を同名にするか_
から始まるようなソートで優先度が高くなる名前にします。
コード
using UnityEngine; using UnityEditor; [CustomEditor(typeof(Transform))] public class TransformInspector : Editor { public override void OnInspectorGUI() { // デフォルトInspector拡張のTypeを取得. var type = typeof(EditorApplication).Assembly.GetType("UnityEditor.TransformInspector"); if (type == null) { return; } // デフォルトInspector拡張を作成してGUIを表示. var editor = CreateEditor(target, type); editor?.OnInspectorGUI(); /* 以下拡張機能を実装 */ EditorGUILayout.LabelField("拡張ほげほげ"); } }
ちなみに標準のInspector拡張のクラス名がわからない場合は、UnityCsReferenceで探すと見つかります。
コンポーネント名+Inspector
やアセット名+Editor
などで検索すれば出てきます。