From 21e186f75b504d832d9c7bef0456edd7d5d3155e Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 8 Sep 2021 10:52:35 +0800 Subject: +behavior design --- .../StyledInspector/StyledRangeOptionsDrawer.cs | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Assets/Art/BOXOPHOBIC/Utils/Editor/StyledInspector/StyledRangeOptionsDrawer.cs (limited to 'Assets/Art/BOXOPHOBIC/Utils/Editor/StyledInspector/StyledRangeOptionsDrawer.cs') diff --git a/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledInspector/StyledRangeOptionsDrawer.cs b/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledInspector/StyledRangeOptionsDrawer.cs new file mode 100644 index 00000000..9af9807b --- /dev/null +++ b/Assets/Art/BOXOPHOBIC/Utils/Editor/StyledInspector/StyledRangeOptionsDrawer.cs @@ -0,0 +1,71 @@ +// Cristian Pop - https://boxophobic.com/ + +using UnityEngine; +using UnityEditor; + +namespace Boxophobic.StyledGUI +{ + [CustomPropertyDrawer(typeof(StyledRangeOptions))] + public class StyledRangeOptionsAttributeDrawer : PropertyDrawer + { + StyledRangeOptions a; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + a = (StyledRangeOptions)attribute; + + GUIStyle styleMid = new GUIStyle(); + styleMid.alignment = TextAnchor.MiddleCenter; + styleMid.normal.textColor = Color.gray; + styleMid.fontSize = 7; + + if (a.displayLabel.Length > 0) + { + EditorGUI.PropertyField(position, property, label, true); + GUILayout.Space(5); + } + + GUILayout.BeginHorizontal(); + GUILayout.Space(8); + property.floatValue = GUILayout.HorizontalSlider(property.floatValue, a.min, a.max); + property.floatValue = Mathf.Clamp(property.floatValue, a.min, a.max); + property.floatValue = Mathf.Round(property.floatValue * 1000f) / 1000f; + GUILayout.Space(8); + GUILayout.EndHorizontal(); + +#if UNITY_2019_3_OR_NEWER + GUILayout.Space(15); +#endif + GUILayout.BeginHorizontal(); + + int maxWidth = 20; + +#if UNITY_2019_3_OR_NEWER + maxWidth = 28; +#endif + for (int i = 0; i < a.options.Length - 1; i++) + { + GUILayout.Label(a.options[i], styleMid, GUILayout.Width(maxWidth)); + GUILayout.Label("", styleMid); + } + + GUILayout.Label(a.options[a.options.Length - 1], styleMid, GUILayout.Width(maxWidth)); + GUILayout.EndHorizontal(); + + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + a = (StyledRangeOptions)attribute; + + if (a.displayLabel.Length > 0) + { + return 18; + } + else + { + return -2; + } + } + } +} -- cgit v1.1-26-g67d0