| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | using UnityEditor;using UnityEngine;namespace MPUIKIT.Editor {    [CustomPropertyDrawer(typeof(Circle))]    public class CirclePropertyDrawer : PropertyDrawer{        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {            EditorGUI.BeginProperty(position, label, property);            {                Rect radiusRect = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);                Rect toolBarRect = new Rect(position.x + EditorGUIUtility.labelWidth,                     position.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing,                    position.width - EditorGUIUtility.labelWidth, EditorGUIUtility.singleLineHeight);                                SerializedProperty spFitCircleRadius = property.FindPropertyRelative("m_FitRadius");                bool FitCirlce = spFitCircleRadius.boolValue;                EditorGUI.BeginDisabledGroup(FitCirlce);                {                    EditorGUI.PropertyField(radiusRect, property.FindPropertyRelative("m_Radius"),                        new GUIContent("Radius"));                }                EditorGUI.EndDisabledGroup();                                                EditorGUI.BeginChangeCheck();                EditorGUI.showMixedValue = spFitCircleRadius.hasMultipleDifferentValues;                {                    EditorGUILayout.BeginHorizontal();                    {                        GUILayout.Space(EditorGUIUtility.labelWidth);                                                FitCirlce = GUI.Toolbar(toolBarRect, FitCirlce ? 1 : 0, new[] {"Free", "Fit"}) == 1;                    }                    EditorGUILayout.EndHorizontal();                }                EditorGUI.showMixedValue = false;                if (EditorGUI.EndChangeCheck()) {                    spFitCircleRadius.boolValue = FitCirlce;                }                            }            EditorGUI.EndProperty();        }        public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {            return EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing * 2;        }    }}
 |