7080 + 1

ゲームプログラミングの記事を書いてます。

【Unity】インスペクタ拡張で元のスクリプトを表示する

何もインスペクタ拡張をしていない場合、コンポーネントにはそのスクリプトが 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