CapersProject/Assets/02.Scripts/Ui/Title/TitleMenuButton.cs
2024-12-03 17:02:15 +09:00

74 lines
2.0 KiB
C#

using BlueWater.Audios;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace BlueWater.Titles
{
public class TitleMenuButton : MonoBehaviour, ISelectHandler, IDeselectHandler, IPointerEnterHandler, IPointerExitHandler
{
[SerializeField, Required]
private Button _targetButton;
[SerializeField, Required]
private Image _selectedImage;
[SerializeField]
private Color _highlightedColor;
[SerializeField]
private string _selectedSfxName = "SelectedButton01";
private Color _originalColor = Color.white;
private bool _isQuitting;
private void OnApplicationQuit()
{
_isQuitting = true;
}
private void OnEnable()
{
if (EventSystem.current.currentSelectedGameObject != gameObject) return;
_selectedImage.enabled = true;
}
private void OnDisable()
{
_selectedImage.enabled = false;
}
public void OnSelect(BaseEventData eventData)
{
AudioManager.Instance.PlaySfx(_selectedSfxName, ignoreTimeScale:true);
_selectedImage.color = _originalColor;
_selectedImage.enabled = true;
}
public void OnDeselect(BaseEventData eventData)
{
_selectedImage.enabled = false;
}
public void OnPointerEnter(PointerEventData eventData)
{
if (EventSystem.current.currentSelectedGameObject == gameObject) return;
_selectedImage.color = _highlightedColor;
_selectedImage.enabled = true;
}
public void OnPointerExit(PointerEventData eventData)
{
if (_isQuitting || EventSystem.current?.currentSelectedGameObject == gameObject) return;
_selectedImage.color = _originalColor;
_selectedImage.enabled = false;
}
}
}