问题描述
我可以对自己编写的脚本使用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");
}
}