ReplayPuzzleGame/Assets/Resources/Scripts/Utility/ButtonSelectedEffect.cs

74 lines
1.8 KiB
C#
Raw Normal View History

2026-02-13 06:26:19 +00:00
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.EventSystems;
public class ButtonSelectedEffect : MonoBehaviour, ISelectHandler, IDeselectHandler
{
private Animator _animator;
[SerializeField] private string selectedStateName = "Selected";
[SerializeField] private AudioClip buttonSelectedAudioClip;
[SerializeField] private float minPitchRange = 0.9f;
[SerializeField] private float maxPitchRange = 1.1f;
[SerializeField] private GameObject indicatorObject;
private bool isFirstSelected = false;
public void Awake()
{
if (GetComponent<Animator>() != null)
{
_animator = GetComponent<Animator>();
}
}
public void OnEnable()
{
if (EventSystem.current.firstSelectedGameObject.Equals(gameObject))
{
isFirstSelected = true;
}
if (indicatorObject != null)
{
indicatorObject.SetActive(false);
}
}
public void OnSelect(BaseEventData eventData)
{
if (isFirstSelected)
{
if (_animator != null)
{
_animator.Play(selectedStateName, 0, 1f);
_animator.Update(0);
}
isFirstSelected = false;
}
else
{
if (buttonSelectedAudioClip != null)
{
SoundManager.instance.PlaySFX(buttonSelectedAudioClip, minPitchRange, maxPitchRange);
}
}
if (indicatorObject != null)
{
indicatorObject.SetActive(true);
}
}
public void OnDeselect(BaseEventData eventData)
{
if (indicatorObject != null)
{
indicatorObject.SetActive(false);
}
}
}