using DG.Tweening; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; namespace UI { public class SelectableItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler { [SerializeField] private GameObject _bgImage; [SerializeField] private float _fadeDuration; [SerializeField] private bool _allowFade = true; private Sequence _fadeSequence; public UnityEvent _onSelect; public UnityEvent _onDeselect; public void OnPointerEnter(PointerEventData eventData) { KillFadeSequence(); _bgImage.SetActive(true); _onSelect.Invoke(); } public void OnPointerExit(PointerEventData eventData) { KillFadeSequence(); _bgImage.SetActive(false); _onDeselect.Invoke(); } private void KillFadeSequence() { if (_fadeSequence != null && _fadeSequence.IsActive()) { _fadeSequence.Kill(); } } } }