Unity编辑器扩展之修改扩展脚本的成员变量

来源:互联网 发布:网络歌手红蔷薇 编辑:程序博客网 时间:2024/04/30 06:33
using UnityEngine;using UnityEditor;[CustomEditor(typeof(XXX))]//XXX是我们要扩展Inspector面板的脚本名,以下我们称之为目标脚本public class Edit : Editor{     private SerializedProperty XXX;     private GUIStyle m_guiFoldoutStyle = null;     private GUIStyle m_guiLineStyle = null;     private bool m_bol;     void OnEnable()        {           XXX = serializedObject.FindProperty("xxx");//xxx是目标脚本的成员变量名        }     //这个方法是继承的Editor的重写Inspector面板的扩展方法     public override void OnInspectorGUI()        {            DrawDefaultInspector();//绘制原来脚本的成员变量,如果不调用这个方法,之前脚本默认的成员变量则不会被绘制            InitializeGUIStyles();            DevelopmentOfRequired();        }        public void DevelopmentOfRequired()        {            m_bol = DrawSectionHeader("这里填写题目", m_texIconTexture, m_bol);            if (m_bol)            {                EditorGUILayout.PropertyField(XXX);//在Inspector面板上绘制目标脚本的成员变量                serializedObject.ApplyModifiedProperties();//修改目标脚本的成员变量之后将值保存            }        }        //初始化生成Inspector面板的分割线        private void InitializeGUIStyles()        {            if (m_guiFoldoutStyle == null)            {                m_guiFoldoutStyle = new GUIStyle(EditorStyles.foldout);                m_guiFoldoutStyle.fontStyle = FontStyle.Bold;                m_guiFoldoutStyle.fixedWidth = 2000.0f;            }            if (m_guiLineStyle == null)            {                m_guiLineStyle = new GUIStyle(GUI.skin.box);                m_guiLineStyle.border.top = 1;                m_guiLineStyle.border.bottom = 1;                m_guiLineStyle.margin.top = 1;                m_guiLineStyle.margin.bottom = 1;                m_guiLineStyle.padding.top = 1;                m_guiLineStyle.padding.bottom = 1;            }        }        //绘制Inspector面板的表头        public bool DrawSectionHeader(string name, Texture2D icon, bool isExpanded)        {            GUILayout.Box(GUIContent.none, m_guiLineStyle, GUILayout.ExpandWidth(true), GUILayout.Height(1.0f));            Rect position = GUILayoutUtility.GetRect(40.0f, 2000.0f, 16.0f, 16.0f, m_guiFoldoutStyle);            isExpanded = EditorGUI.Foldout(position, isExpanded, new GUIContent(" " + name, icon), true, m_guiFoldoutStyle);            return isExpanded;        }}
0 0
原创粉丝点击