RiftMayhem/Assets/Scripts/UI/ButtonBorderInteractionStateController.cs

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