CommonButton.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 Jiang Yin. All rights reserved.
  4. // Homepage: https://gameframework.cn/
  5. // Feedback: mailto:ellan@gameframework.cn
  6. //------------------------------------------------------------
  7. using UnityEngine;
  8. using UnityEngine.Events;
  9. using UnityEngine.EventSystems;
  10. namespace MetaClient
  11. {
  12. public class CommonButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler
  13. {
  14. private const float FadeTime = 0.3f;
  15. private const float OnHoverAlpha = 0.7f;
  16. private const float OnClickAlpha = 0.6f;
  17. [SerializeField]
  18. private UnityEvent m_OnHover = null;
  19. [SerializeField]
  20. private UnityEvent m_OnClick = null;
  21. private CanvasGroup m_CanvasGroup = null;
  22. private void Awake()
  23. {
  24. m_CanvasGroup = gameObject.GetOrAddComponent<CanvasGroup>();
  25. }
  26. private void OnDisable()
  27. {
  28. m_CanvasGroup.alpha = 1f;
  29. }
  30. public void OnPointerEnter(PointerEventData eventData)
  31. {
  32. if (eventData.button != PointerEventData.InputButton.Left)
  33. {
  34. return;
  35. }
  36. StopAllCoroutines();
  37. StartCoroutine(m_CanvasGroup.FadeToAlpha(OnHoverAlpha, FadeTime));
  38. m_OnHover.Invoke();
  39. }
  40. public void OnPointerExit(PointerEventData eventData)
  41. {
  42. if (eventData.button != PointerEventData.InputButton.Left)
  43. {
  44. return;
  45. }
  46. StopAllCoroutines();
  47. StartCoroutine(m_CanvasGroup.FadeToAlpha(1f, FadeTime));
  48. }
  49. public void OnPointerDown(PointerEventData eventData)
  50. {
  51. if (eventData.button != PointerEventData.InputButton.Left)
  52. {
  53. return;
  54. }
  55. m_CanvasGroup.alpha = OnClickAlpha;
  56. m_OnClick.Invoke();
  57. }
  58. public void OnPointerUp(PointerEventData eventData)
  59. {
  60. if (eventData.button != PointerEventData.InputButton.Left)
  61. {
  62. return;
  63. }
  64. m_CanvasGroup.alpha = OnHoverAlpha;
  65. }
  66. }
  67. }