using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class GUIObjectSound : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, ISubmitHandler, ISelectHandler, IEventSystemHandler { public string soundEnter = "btn_hover"; public string soundClick = "btn_pressed"; public bool clickSoundOnPointerUp; private Selectable selectable; public bool isMouseOver; private void Awake() { selectable = GetComponent(); } public void OnPointerEnter(PointerEventData eventData) { if (selectable.interactable) { AudioController.Play(soundEnter); } isMouseOver = true; } public void OnPointerExit(PointerEventData eventData) { isMouseOver = false; } public void OnPointerDown(PointerEventData eventData) { } public void OnPointerUp(PointerEventData eventData) { if (clickSoundOnPointerUp && selectable.interactable) { AudioController.Play(soundClick); } } public void OnPointerClick(PointerEventData eventData) { if (!clickSoundOnPointerUp && selectable.interactable) { AudioController.Play(soundClick); } } public void OnSelect(BaseEventData eventData) { if (!isMouseOver) { AudioController.Play(soundEnter); } } public void OnSubmit(BaseEventData eventData) { AudioController.Play(soundClick); } }