c# - 覆盖 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;
}
}
解决方案
好的,刚刚发现了问题——我将我的类命名为 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");
}
}
推荐阅读
- typescript - 在本地化的情况下如何验证字符串插值中的参数?
- java - 连接失败:ECONNREFUSED(连接被拒绝)
- apache-spark - PYSPARK DF MAP:获取火花图中给定键的值
- flutter - 如何在飞镖中加载嵌套地图?
- groovy - 在 Groovy 中重构 Switch
- scala - Scala FunctionN tupled vs curried 结果解释
- javascript - JSF 2.3 与某些没有结束标记的 HTML5 元素不兼容,如链接
- c++ - 当我将一个类对象推回一个初始化的类向量时,我遇到了一个很长很奇怪的错误
- node.js - 通过 Node.js 向 Cassandra / Scylla 添加 65M 记录
- javascript - Mongodb更新集合中的字段,同时自动生成另一个字段