using DG.Tweening; using System; using TMPro; using TMPro.EditorUtilities; using UnityEngine; using UnityEngine.UI; public class MSignalButton : MonoBehaviour { public event Action OnClick; [SerializeField] private Image _image; [SerializeField] TextMeshProUGUI _textMeshPro; [SerializeField] private Color _normalColor; [SerializeField] private Color _selectedColor; [SerializeField] private Color _pressedColor; [SerializeField] private AudioClip _clip; private bool _lastPressed = false; private Sequence _animation; public void TakeInput(bool pressed) { if (_lastPressed != pressed) { if (pressed) { ClickAnimation(); } _lastPressed = pressed; } } public void ClickAnimation() { StopAnimation(); _animation = DOTween.Sequence(); _animation.Append(_image.DOColor(_pressedColor, 0.15f)); _animation.Append(_image.DOColor(_selectedColor, 0.15f)); _animation.AppendCallback(() => { OnClick?.Invoke(); SoundManager.instance.playClip(_clip); }); _animation.PlayForward(); } public void SelectAnimation() { StopAnimation(); _animation = DOTween.Sequence(); _animation.Append(_image.DOColor(_selectedColor, 0.3f)); _animation.Join(_textMeshPro.DOColor(Color.black, 0.3f)); _animation.PlayForward(); } public void DeselectAnimation() { StopAnimation(); //_animation = DOTween.Sequence(); //_animation.Append(_image.DOColor(_normalColor, 0.1f)); //_animation.Join(_textMeshPro.DOColor(Color.white, 0.3f)); //_animation.PlayForward(); _image.color = _normalColor; _textMeshPro.color = Color.white; } private void StopAnimation() { if (_animation != null) { _animation.Kill(); _animation = null; } } }