chip-gameV3/Assets/MSignalButton.cs

83 lines
2.0 KiB
C#

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