码迷,mamicode.com
首页 > 编程语言 > 详细

Unity3D之如何扩展脚本的Inspector面板

时间:2015-03-15 12:12:10      阅读:4750      评论:0      收藏:0      [点我收藏+]

标签:

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

 

Unity3D之如何扩展脚本的Inspector面板

标签:

原文地址:http://www.cnblogs.com/ninja9998877/p/4339044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!