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();
           }
}
// 至此,一个简单的变量控制相互显示的例子就完成了。
// 试一下吧!

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。