首页 > 解决方案 > 覆盖 Unity 内置组件的自定义检查器

问题描述

我可以将 CustomInspector 用于我编写的脚本。不幸的是,这不适用于 Unity 的内置组件(例如刚体、变换...)。

我想隐藏其他所有内容,只公开“质量”,但这并没有反映在 Inspector 中。相反,如果我转到 3 个点并单击属性,它会显示我编写的 CustomInspector。

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Rigidbody))]
public class RigidbodyEditor : Editor
{
    Rigidbody rigidbody;
    float mass;
    public override void OnInspectorGUI()
    {
        // base.OnInspectorGUI();
        rigidbody = (Rigidbody)target;

        mass = EditorGUILayout.FloatField("mass", mass);
        if (mass < 0)
        {
            mass = 0;
        }
        rigidbody.mass = mass;
    }
}

标签: c#unity3dunity-editor

解决方案


好的,刚刚发现了问题——我将我的类命名为 RigidbodyEditor,这正是 Unity 在其源代码中命名它的方式。我将名称更改为其他名称,并且效果很好。

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Rigidbody))]
public class RigidbodyEditorOverride : Editor
{
    Rigidbody rigidbody;
    float mass;
    public override void OnInspectorGUI()
    {
        // base.OnInspectorGUI();
        rigidbody = (Rigidbody)target;

        mass = EditorGUILayout.FloatField("mass", mass);
        if (mass < 0)
        {
            mass = 0;
        }
        rigidbody.mass = mass;

        GUILayout.Button("hello");
    }
}


推荐阅读