using System.Collections; using System.Collections.Generic; using FMODUnity; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Serialization; using UnityEngine.UI; public class NoisyUIElement : MonoBehaviour, ISelectHandler, ISubmitHandler, IPointerClickHandler, IMoveHandler { [SerializeField] [EventRef] private string ClickSfx; [SerializeField] [EventRef] private string BloopSfx; [SerializeField] private bool _clickHorizontal; [SerializeField] private bool _clickVertical; private void PlayClickSfx() { if ( !string.IsNullOrEmpty( ClickSfx ) ) { RuntimeManager.PlayOneShot( ClickSfx ); } } private void PlayBloopSfx() { if ( !string.IsNullOrEmpty( BloopSfx ) ) { RuntimeManager.PlayOneShot( BloopSfx ); } } public void OnSelect( BaseEventData eventData ) => PlayClickSfx(); public void OnSubmit( BaseEventData eventData ) => PlayBloopSfx(); public void OnPointerClick( PointerEventData eventData ) => PlayBloopSfx(); public void OnDrag( PointerEventData eventData ) => PlayBloopSfx(); public void OnMove( AxisEventData eventData ) { switch ( eventData.moveDir ) { case MoveDirection.Left: case MoveDirection.Right: if ( _clickHorizontal ) { PlayClickSfx(); } break; case MoveDirection.Up: case MoveDirection.Down: if ( _clickVertical ) { PlayClickSfx(); } break; } } }