| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 | using UnityEngine;using UnityEditor;using FairyGUI;namespace FairyGUIEditor{    /// <summary>    ///     /// </summary>    [CustomEditor(typeof(UIConfig))]    public class UIConfigEditor : Editor    {        string[] propertyToExclude;        bool itemsFoldout;        bool packagesFoldOut;        int errorState;        private const float kButtonWidth = 18f;        void OnEnable()        {            propertyToExclude = new string[] { "m_Script", "Items", "PreloadPackages" };            itemsFoldout = EditorPrefs.GetBool("itemsFoldOut");            packagesFoldOut = EditorPrefs.GetBool("packagesFoldOut");            errorState = 0;        }        public override void OnInspectorGUI()        {            serializedObject.Update();            DrawPropertiesExcluding(serializedObject, propertyToExclude);                        UIConfig config = (UIConfig)target;            EditorGUILayout.BeginHorizontal();            EditorGUI.BeginChangeCheck();            itemsFoldout = EditorGUILayout.Foldout(itemsFoldout, "Config Items");            if (EditorGUI.EndChangeCheck())                EditorPrefs.SetBool("itemsFoldOut", itemsFoldout);            EditorGUILayout.EndHorizontal();            bool modified = false;            if (itemsFoldout)            {                Undo.RecordObject(config, "Items");                int len = config.Items.Count;                EditorGUILayout.BeginHorizontal();                EditorGUILayout.PrefixLabel("Add");                UIConfig.ConfigKey selectedKey = (UIConfig.ConfigKey)EditorGUILayout.EnumPopup((System.Enum)UIConfig.ConfigKey.PleaseSelect);                if (selectedKey != UIConfig.ConfigKey.PleaseSelect)                {                    int index = (int)selectedKey;                    if (index > len - 1)                    {                        for (int i = len; i < index; i++)                            config.Items.Add(new UIConfig.ConfigValue());                        UIConfig.ConfigValue value = new UIConfig.ConfigValue();                        value.valid = true;                        UIConfig.SetDefaultValue(selectedKey, value);                        config.Items.Add(value);                    }                    else                    {                        UIConfig.ConfigValue value = config.Items[index];                        if (value == null)                        {                            value = new UIConfig.ConfigValue();                            value.valid = true;                            UIConfig.SetDefaultValue(selectedKey, value);                            config.Items[index] = value;                        }                        else if (!value.valid)                        {                            value.valid = true;                            UIConfig.SetDefaultValue(selectedKey, value);                        }                    }                }                EditorGUILayout.EndHorizontal();                for (int i = 0; i < len; i++)                {                    UIConfig.ConfigValue value = config.Items[i];                    if (value == null || !value.valid)                        continue;                    EditorGUILayout.BeginHorizontal();                    EditorGUILayout.PrefixLabel(((UIConfig.ConfigKey)i).ToString());                    switch ((UIConfig.ConfigKey)i)                    {                        case UIConfig.ConfigKey.ClickDragSensitivity:                        case UIConfig.ConfigKey.DefaultComboBoxVisibleItemCount:                        case UIConfig.ConfigKey.DefaultScrollStep:                        case UIConfig.ConfigKey.TouchDragSensitivity:                        case UIConfig.ConfigKey.TouchScrollSensitivity:                        case UIConfig.ConfigKey.InputCaretSize:                            value.i = EditorGUILayout.IntField(value.i);                            break;                        case UIConfig.ConfigKey.ButtonSound:                        case UIConfig.ConfigKey.GlobalModalWaiting:                        case UIConfig.ConfigKey.HorizontalScrollBar:                        case UIConfig.ConfigKey.LoaderErrorSign:                        case UIConfig.ConfigKey.PopupMenu:                        case UIConfig.ConfigKey.PopupMenu_seperator:                        case UIConfig.ConfigKey.TooltipsWin:                        case UIConfig.ConfigKey.VerticalScrollBar:                        case UIConfig.ConfigKey.WindowModalWaiting:                        case UIConfig.ConfigKey.DefaultFont:                            value.s = EditorGUILayout.TextField(value.s);                            break;                        case UIConfig.ConfigKey.DefaultScrollBounceEffect:                        case UIConfig.ConfigKey.DefaultScrollTouchEffect:                        case UIConfig.ConfigKey.RenderingTextBrighterOnDesktop:                        case UIConfig.ConfigKey.AllowSoftnessOnTopOrLeftSide:                        case UIConfig.ConfigKey.DepthSupportForPaintingMode:                            value.b = EditorGUILayout.Toggle(value.b);                            break;                        case UIConfig.ConfigKey.ButtonSoundVolumeScale:                            value.f = EditorGUILayout.Slider(value.f, 0, 1);                            break;                        case UIConfig.ConfigKey.ModalLayerColor:                        case UIConfig.ConfigKey.InputHighlightColor:                            value.c = EditorGUILayout.ColorField(value.c);                            break;                        case UIConfig.ConfigKey.Branch:                            EditorGUI.BeginChangeCheck();                            value.s = EditorGUILayout.TextField(value.s);                            if (EditorGUI.EndChangeCheck())                                modified = true;                            break;                    }                    if (GUILayout.Button(new GUIContent("X", "Delete Item"), EditorStyles.miniButtonRight, GUILayout.Width(30)))                    {                        config.Items[i].Reset();                        UIConfig.SetDefaultValue((UIConfig.ConfigKey)i, config.Items[i]);                        modified = true;                    }                    EditorGUILayout.EndHorizontal();                }            }            EditorGUILayout.BeginHorizontal();            EditorGUI.BeginChangeCheck();            packagesFoldOut = EditorGUILayout.Foldout(packagesFoldOut, "Preload Packages");            if (EditorGUI.EndChangeCheck())                EditorPrefs.SetBool("packagesFoldOut", packagesFoldOut);            EditorGUILayout.EndHorizontal();            if (packagesFoldOut)            {                Undo.RecordObject(config, "PreloadPackages");                EditorToolSet.LoadPackages();                if (EditorToolSet.packagesPopupContents != null)                {                    EditorGUILayout.BeginHorizontal();                    EditorGUILayout.PrefixLabel("Add");                    int selected = EditorGUILayout.Popup(EditorToolSet.packagesPopupContents.Length - 1, EditorToolSet.packagesPopupContents);                    EditorGUILayout.EndHorizontal();                    if (selected != EditorToolSet.packagesPopupContents.Length - 1)                    {                        UIPackage pkg = UIPackage.GetPackages()[selected];                        string tmp = pkg.assetPath.ToLower();                        int pos = tmp.LastIndexOf("resources/");                        if (pos != -1)                        {                            string packagePath = pkg.assetPath.Substring(pos + 10);                            if (config.PreloadPackages.IndexOf(packagePath) == -1)                                config.PreloadPackages.Add(packagePath);                            errorState = 0;                        }                        else                        {                            errorState = 10;                        }                    }                }                if (errorState > 0)                {                    errorState--;                    EditorGUILayout.HelpBox("Package is not in resources folder.", MessageType.Warning);                }                int cnt = config.PreloadPackages.Count;                int pi = 0;                while (pi < cnt)                {                    EditorGUILayout.BeginHorizontal();                    EditorGUILayout.PrefixLabel("" + pi + ".");                    config.PreloadPackages[pi] = EditorGUILayout.TextField(config.PreloadPackages[pi]);                    if (GUILayout.Button(new GUIContent("X", "Delete Item"), EditorStyles.miniButtonRight, GUILayout.Width(30)))                    {                        config.PreloadPackages.RemoveAt(pi);                        cnt--;                    }                    else                        pi++;                    EditorGUILayout.EndHorizontal();                }            }            else                errorState = 0;            if (serializedObject.ApplyModifiedProperties() || modified)                (target as UIConfig).ApplyModifiedProperties();        }    }}
 |