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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM