何もインスペクタ拡張をしていない場合、コンポーネントにはそのスクリプトが ObjectField で表示されます。
これをクリックするとスクリプトの場所を教えてくれるため、意外と便利です。
public class Example : MonoBehaviour { [SerializeField] int example; }
が、インスペクタ拡張で特に何もしないでいると、この表示は消えてしまいます。
スクリプトは m_Script
で宣言されているので、 SerializedProperty
を取得すれば実現できます。
[CustomEditor(typeof(Example))] public class ExampleInspector : Editor { public override void OnInspectorGUI() { // Scriptを編集できない状態で表示する using (new EditorGUI.DisabledScope(true)) { EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script")); } EditorGUILayout.PropertyField(serializedObject.FindProperty("example")); } }
この処理は Unity の公式の GitHub と同じ処理をしています。
github.com