はじめに
例えば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(); } }
