简介
有时候我们需要在某个功能开启的情况下编辑一些参数,这时候就可以自定义 Inspector 面板的显示逻辑来实现这一需求。
原理
Unity 提供自定义编辑器的功能,通过使用属性标签[CustomEditor(typeof(CustomClass))]
定义一个编辑器类来自定义我们需要的 Inspector 显示。如果需要多选编辑的话,只要再加一个属性标签[CanEditMultipleObjects]
即可。
实现
我们需要一个原始的 MonoBehaviour 类,以及一个派生 Editor 的类,即我们自定义修改某一 MonoBehaviour 类显示面板的类。
假设我们有一个 MonoBehaviour 类如下:
1 | using UnityEngine; |
我们要实现如下需求:当_isShow 为 true 的时候在面板上显示_initNum。
我们需要这样一个 Editor 类:
1 | using UnityEditor; |
Editor 类的编写方式和普通的 Editor 拓展一样,需要注意的是没有写的属性也不会出现在 Inspector 中,这个类相当于完全接管原来的面板显示逻辑。
为了更好分辨面板属性层级,我们也可以用EditorGUI.indentLevel
来缩进。或者使用EditorGUILayout.Space()
,根据具体情况即可。
当然,显示属性的方法也可以和官方文档一样。具体直接看官方文档即可。