com.alicizax.unity.ui.exten.../Runtime/UGUIExtension/Button/UIButtonSuper.cs
2025-04-17 16:03:39 +08:00

86 lines
2.3 KiB
C#

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<ButtonSoundCell> m_ButtonUISounds = new List<ButtonSoundCell>();
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);
}
}
}