void InitDefaultValue(UIConfig.ConfigKey key, UIConfig.ConfigValue value) { switch ((UIConfig.ConfigKey)key) { case UIConfig.ConfigKey.ButtonSoundVolumeScale: value.f = 1; break; case UIConfig.ConfigKey.ClickDragSensitivity: value.i = 2; break; case UIConfig.ConfigKey.DefaultComboBoxVisibleItemCount: value.i = 10; break; case UIConfig.ConfigKey.DefaultScrollBarDisplay: value.i = (int)ScrollBarDisplayType.Default; break; case UIConfig.ConfigKey.DefaultScrollBounceEffect: case UIConfig.ConfigKey.DefaultScrollTouchEffect: value.b = true; break; case UIConfig.ConfigKey.DefaultScrollStep: value.i = 25; break; case UIConfig.ConfigKey.ModalLayerColor: value.c = new Color(0f, 0f, 0f, 0.4f); break; case UIConfig.ConfigKey.RenderingTextBrighterOnDesktop: value.b = true; break; case UIConfig.ConfigKey.TouchDragSensitivity: value.i = 10; break; case UIConfig.ConfigKey.TouchScrollSensitivity: value.i = 20; break; case UIConfig.ConfigKey.InputCaretSize: value.i = 1; break; case UIConfig.ConfigKey.InputHighlightColor: value.c = new Color32(255, 223, 141, 128); break; case UIConfig.ConfigKey.RightToLeftText: value.b = false; break; } }
public override void OnInspectorGUI() { serializedObject.Update(); #if (UNITY_5 || UNITY_5_3_OR_NEWER) DrawPropertiesExcluding(serializedObject, propertyToExclude); #endif 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.EnhancedTextOutlineEffect: EditorGUI.BeginChangeCheck(); value.b = EditorGUILayout.Toggle(value.b); if (EditorGUI.EndChangeCheck()) { modified = true; } 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.RichTextRowVerticalAlign: EditorGUI.BeginChangeCheck(); value.i = EditorGUILayout.EnumPopup((VertAlignType)value.i).GetHashCode(); if (EditorGUI.EndChangeCheck()) { modified = true; } 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(); } }