【问题标题】:Override custom inspector for Unity built in components覆盖 Unity 内置组件的自定义检查器
【发布时间】:2020-10-01 16:26:47
【问题描述】:

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

我想隐藏其他所有内容,只公开“质量”,但这并未反映在检查器中。相反,如果我转到 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# unity3d unity-editor


    【解决方案1】:

    好的,刚刚发现了问题 - 我将我的类命名为 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");
        }
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多