using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using System; using UnityEngine.UI; using AudioType = AlicizaX.Audio.Runtime.AudioType; namespace AlicizaX.UI.Extension { public enum ButtonSoundType { Down, Up, Click, Enter, Exit } [Serializable] public class ButtonSoundCell { public ButtonSoundType ButtonSoundType = ButtonSoundType.Click; public string ButtonUISoundName = ""; } public class UIButtonSuper : Button,IButton { public List m_ButtonUISounds = new List(); public ButtonSoundCell GetButtonSound(ButtonSoundType buttonSoundType) { foreach (var buttonSound in m_ButtonUISounds) { if (buttonSound.ButtonSoundType == buttonSoundType) { return buttonSound; } } return null; } private void PlayButtonSound(ButtonSoundType buttonSoundType) { ButtonSoundCell buttonSound = GetButtonSound(buttonSoundType); if (buttonSound == null || string.IsNullOrEmpty(buttonSound.ButtonUISoundName)) { return; } GameApp.Audio.Play(AudioType.UISound, buttonSound.ButtonUISoundName, false, GameApp.Audio.UISoundVolume, true); } public override void OnPointerEnter(PointerEventData eventData) { base.OnPointerEnter(eventData); PlayButtonSound(ButtonSoundType.Enter); } public override void OnPointerDown(PointerEventData eventData) { base.OnPointerDown(eventData); PlayButtonSound(ButtonSoundType.Down); } public override void OnPointerUp(PointerEventData eventData) { base.OnPointerUp(eventData); PlayButtonSound(ButtonSoundType.Up); } public override void OnPointerExit(PointerEventData eventData) { base.OnPointerExit(eventData); PlayButtonSound(ButtonSoundType.Exit); } public override void OnPointerClick(PointerEventData eventData) { base.OnPointerClick(eventData); PlayButtonSound(ButtonSoundType.Click); } } }