微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

覆盖Unity内置组件的自定义检查器

如何解决覆盖Unity内置组件的自定义检查器

我可以对自己编写的脚本使用CustomInspector。不幸的是,这不适用于Unity的内置组件(例如Rigidbody,Transform ...)。

我想隐藏其他所有内容,仅显示“大量”,但这未在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;
    }
}

解决方法

OK刚解决了这个问题-我为类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");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。