SpriteStateDrawer.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace UnityEditor.UI
  4. {
  5. [CustomPropertyDrawer(typeof(SpriteState), true)]
  6. /// <summary>
  7. /// This is a PropertyDrawer for SpriteState. It is implemented using the standard Unity PropertyDrawer framework.
  8. /// </summary>
  9. public class SpriteStateDrawer : PropertyDrawer
  10. {
  11. public override void OnGUI(Rect rect, SerializedProperty prop, GUIContent label)
  12. {
  13. Rect drawRect = rect;
  14. drawRect.height = EditorGUIUtility.singleLineHeight;
  15. SerializedProperty highlightedSprite = prop.FindPropertyRelative("m_HighlightedSprite");
  16. SerializedProperty pressedSprite = prop.FindPropertyRelative("m_PressedSprite");
  17. SerializedProperty selectedSprite = prop.FindPropertyRelative("m_SelectedSprite");
  18. SerializedProperty disabledSprite = prop.FindPropertyRelative("m_DisabledSprite");
  19. EditorGUI.PropertyField(drawRect, highlightedSprite);
  20. drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
  21. EditorGUI.PropertyField(drawRect, pressedSprite);
  22. drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
  23. EditorGUI.PropertyField(drawRect, selectedSprite);
  24. drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
  25. EditorGUI.PropertyField(drawRect, disabledSprite);
  26. drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
  27. }
  28. public override float GetPropertyHeight(SerializedProperty prop, GUIContent label)
  29. {
  30. return 4 * EditorGUIUtility.singleLineHeight + 3 * EditorGUIUtility.standardVerticalSpacing;
  31. }
  32. }
  33. }