2026-04-07 17:36:53 +08:00

108 lines
2.9 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
using ZXKFramework;
namespace YiLiao.XinFeiTingZhen
{
public class AudioPanel : UIBase
{
// 1. 在Inspector中拖拽播放按钮
public Button playButton;
// 2. 在Inspector中拖拽暂停按钮
public Button pauseButton;
// 3. 在Inspector中拖拽音量Slider
public Slider volumeSlider;
// 4. 在Inspector中拖拽显示百分比的Text
public Text volumeText;
// 引用自身的 AudioSource 组件
public AudioSource audioSource;
public override string GroupName => "AudioPanel";
public override string Name => "AudioPanel";
public override void Init(IUIManager uictrl)
{
base.Init(uictrl);
// 添加事件监听
if (playButton != null)
{
playButton.onClick.AddListener(PlayAudio);
}
if (pauseButton != null)
{
pauseButton.onClick.AddListener(PauseAudio);
}
if (volumeSlider != null)
{
volumeSlider.onValueChanged.AddListener(OnVolumeChanged);
}
}
public override void Show()
{
base.Show();
Game.Instance.sound.StopBGM();
}
/// <summary>
/// 从 Resources/Sounds 文件夹加载音频
/// </summary>
public void LoadAudioClip(string fileName)
{
AudioClip clip = Resources.Load<AudioClip>("XinFeiTingZhen/Sounds/" + fileName);
if (clip != null)
{
audioSource.clip = clip;
audioSource.loop = true; // 设置为循环播放
PlayAudio();
Debug.Log("音频加载成功: " + fileName);
}
else
{
Debug.LogError("未找到音频文件: Resources/XinFeiTingZhen/Sounds/" + fileName);
PauseAudio();
}
}
/// <summary>
/// 播放音频
/// </summary>
public void PlayAudio()
{
audioSource.Play();
playButton.gameObject.SetActive(false);
pauseButton.gameObject.SetActive(true);
}
/// <summary>
/// 暂停音频
/// </summary>
public void PauseAudio()
{
audioSource.Pause();
playButton.gameObject.SetActive(true);
pauseButton.gameObject.SetActive(false);
}
/// <summary>
/// 音量改变事件
/// </summary>
/// <param name="value">0到1之间的值</param>
void OnVolumeChanged(float value)
{
audioSource.volume = value;
// 更新文本显示 (例如 0.4 -> 40%)
volumeText.text = Mathf.RoundToInt(value * 100) + "%";
}
public override void Hide()
{
base.Hide();
PauseAudio();
}
}
}