base.OnInspectorGUI を呼び出さない場合は、スクリプトの参照を表示できないので
スクリプトを修正するさいに、クラス名から検索する必要があり面倒
using UnityEditor; using UnityEngine; public class SampleMonoBehaviour : MonoBehaviour { [SerializeField] private int _int; } [CustomEditor(typeof(SampleMonoBehaviour))] public class SampleMonoBehaviourEditor : Editor { private SerializedProperty _int; private void OnEnable() { _int = serializedObject.FindProperty("_int"); } public override void OnInspectorGUI() { EditorGUILayout.PropertyField(_int); } }
スクリプトの SerializedProperty
スクリプトの SerializedProperty も取得することが可能で m_Script
というフィールドで定義されているので
serializedObject.FindProperty("m_Script");
とすることで取得できる
これを利用して先程の CustomEditor を修正するとスクリプトの参照が表示されるようになる
[CustomEditor(typeof(SampleMonoBehaviour))] public class SampleMonoBehaviourEditor : Editor { private SerializedProperty _int; private SerializedProperty _script; private void OnEnable() { _script = serializedObject.FindProperty("m_Script"); _int = serializedObject.FindProperty("_int"); } public override void OnInspectorGUI() { using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.PropertyField(_script); } EditorGUILayout.PropertyField(_int); } }