63 lines
1.6 KiB
C#
63 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
|
|
[RequireComponent(typeof(Image))]
|
|
public class ButtonBorderInteractionStateController : MonoBehaviour
|
|
{
|
|
[SerializeField] private Color Normal;
|
|
[SerializeField] private Color Hover;
|
|
|
|
Image border;
|
|
|
|
Button parentButton;
|
|
|
|
EventTrigger eventTrigger;
|
|
|
|
private void Awake()
|
|
{
|
|
border = GetComponent<Image>();
|
|
|
|
parentButton = GetComponentInParent<Button>();
|
|
|
|
if (parentButton == null) return;
|
|
|
|
eventTrigger = parentButton.GetComponent<EventTrigger>();
|
|
|
|
if(eventTrigger == null)
|
|
{
|
|
eventTrigger = parentButton.gameObject.AddComponent<EventTrigger>();
|
|
}
|
|
|
|
EventTrigger.Entry pointerEnterEntry = new EventTrigger.Entry
|
|
{
|
|
eventID = EventTriggerType.PointerEnter
|
|
};
|
|
pointerEnterEntry.callback.AddListener((x) => OnPointerEnter((PointerEventData)x));
|
|
eventTrigger.triggers.Add(pointerEnterEntry);
|
|
|
|
EventTrigger.Entry pointerExitEntry = new EventTrigger.Entry
|
|
{
|
|
eventID = EventTriggerType.PointerExit
|
|
};
|
|
pointerExitEntry.callback.AddListener((x) => OnPointerExit((PointerEventData)x));
|
|
eventTrigger.triggers.Add(pointerExitEntry);
|
|
}
|
|
|
|
|
|
private void OnPointerEnter(PointerEventData eventData)
|
|
{
|
|
if (!parentButton.interactable) return;
|
|
|
|
border.color = Hover;
|
|
}
|
|
private void OnPointerExit(PointerEventData eventData)
|
|
{
|
|
if (!parentButton.interactable) return;
|
|
|
|
border.color = Normal;
|
|
}
|
|
}
|