// 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; } } } }