Unity3D之如何扩展脚本的Inspector面板
关于扩展编辑器
Unity给我们提供了很好的可视化编程环境,但对于我们有些更懒蛋的程序猿来说,还不够方便。所以Unity也给我们提供了很友好的扩展方式。
今天来说一下如何自定义一个脚本的inspector面板。
unity中所有编辑器相关的脚本,都放在Editor文件夹,所以建一个先。
假设有个脚本ABC.cs 我们想自定义它的Inspector面板。
现在上代码:
// 要自定义的脚本 public class ABC : Monobehaviour{ public bool a; public float b; public int c; } // 自定义编辑器脚本 [CustomEditor(typeof(ABC)), CanEditorMutipleObjects] // 这意思就是此脚本为ABC脚本的编辑器脚本,CanEditorMutipleObjects 顾名思义,可以同时编辑多个物体 public class ABC_Editor : Editor{ // 这里用简单的显示控制来让大家理解自定义编辑器的流程 public static SerializedProperty a_prop, b_prop, c_prop; void OnEnable(){ // 三个在ABC.cs中定义的属性 a_prop = serializedObject.FindProperty("a"); b_prop = serializedObject.FindProperty("b"); c_prop = serializedObject.FindProperty("c"); } public override void OnInspectorGUI(){ // 更新编辑器显示的序列化属性 serializedObject.Update(); // 没什么说的, 显示属性 EditorGUILayout.PropertyField(a_prop); // 获取a的序列化值 bool display = a_prop.boolValue; if(display){ EditorGUILayout.PropertyField(b_prop); float weight = b_prop.floatValue; if(weight > 0.5f) EditorGUILayout.PropertyField(c_prop); } // 接受序列化赋值 serializedObject.ApplyModifiedProperties(); } } // 至此,一个简单的变量控制相互显示的例子就完成了。 // 试一下吧!
文章来自:http://www.cnblogs.com/ninja9998877/p/4339044.html