57 lines
1.3 KiB
C#
57 lines
1.3 KiB
C#
using DG.Tweening;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
|
|
namespace UI
|
|
{
|
|
public class SelectableItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
|
{
|
|
[SerializeField] private Image _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();
|
|
|
|
if (_allowFade)
|
|
{
|
|
_fadeSequence = DOTween.Sequence();
|
|
_fadeSequence.Append(_bgImage.DOFade(1, _fadeDuration));
|
|
}
|
|
|
|
_onSelect.Invoke();
|
|
}
|
|
|
|
public void OnPointerExit(PointerEventData eventData)
|
|
{
|
|
KillFadeSequence();
|
|
|
|
if (_allowFade)
|
|
{
|
|
_fadeSequence = DOTween.Sequence();
|
|
_fadeSequence.Append(_bgImage.DOFade(0, _fadeDuration));
|
|
}
|
|
|
|
_onDeselect.Invoke();
|
|
}
|
|
|
|
private void KillFadeSequence()
|
|
{
|
|
if (_fadeSequence != null && _fadeSequence.IsActive())
|
|
{
|
|
_fadeSequence.Kill();
|
|
}
|
|
}
|
|
}
|
|
} |