108 lines
2.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|