はじめに
例えばUnityが提供しているImageコンポーネントですが、Color
というプロパティだけ非表示にしたいみたいなモチベーションがあったとします。

ただInspector
拡張をする際にbase.OnInspectorGUI()
をしてしまうと、Color
が表示されてしまいます。
[CustomEditor(typeof(Image))] public class SampleEditor : Editor { public override void OnInspectorGUI() { // Imageコンポーネントの既存のインスペクタを表示 base.OnInspectorGUI(); } }

どうすれば実現できるのかというと、ドキュメントにちらっとだけ触れられているinternal
なメソッドを利用すると実現できます。今回はその利用方法について紹介したいと思います。
Editor-OnInspectorGUI - Unity スクリプトリファレンス
概要
UnityEditor.Editor.DrawPropertiesExcluding
を利用すると、特定のプロパティだけ非表示にすることができます。protected internal
なので、ドキュメントにはAPI一覧にないので注意です。
protected internal static void DrawPropertiesExcluding(SerializedObject obj, params string[] propertyToExclude)
公式でもAnimationEditor
なんかで使われていたりします。
github.com
使い方
実際にImage
コンポーネントのImage
プロパティを非表示にしてみましょう。
[CustomEditor(typeof(Image))] public class ImageInspectorEditor : Editor { public override void OnInspectorGUI() { serializedObject.Update(); DrawPropertiesExcluding(serializedObject, "m_Color"); serializedObject.ApplyModifiedProperties(); } }
