音乐播放器的实现(五)—— 音量的加减和静音
前言
这篇我们加入音量控制键,可以改变音量的大小,实现静音和非静音的切换。
一、UI面板的制作
1、新建一个按钮、一个Slider和一个Text,调整好大小和位置,具体命名如下图,把Text文本框放置Slider下,使之成为Slider的一级子节点。
2、准备两张图片,用来做静音切换的显示。
二、核心代码
初始化相关控件和变量,主要运用Audio Source的Mute(静音)和Volume(音量)。Mute为false时,静音关闭,为true时,静音打开。Volume的值在0~1,0为声音最小,1为声音最大。通过改变这两个的参数和状态,来实现静音和音量控制。
private GameObject vioce_butt, voice_text, voice_slid; //音量按钮、音量数字、音量进度条
int clickNum=0,value;//变量
void initVoice()//初始化
{
vioce_butt = GameObject.Find("voice_button");
voice_text = GameObject.Find("voice_text");
voice_slid = GameObject.Find("voice_slider");
//voice_slid.SetActive(false); //开始时声音进度条不显示(当鼠标放在音量按钮上时显示)
voice_slid.GetComponent<Slider>().value = 20;//开始声音为20;
//开始先调用一次,设置初始的音量大小
voice();
//给进度条添加监听,进度条的值改变即调用voice()方法
voice_slid.GetComponent<Slider>().onValueChanged.AddListener(delegate { voice(); });
//给声音按钮添加监听
vioce_butt.GetComponent<Button>().onClick.AddListener(delegate
{
clickNum++;//点击按钮的次数
if(clickNum==1)//1为打开静音,0为关闭静音
{
//打开音频播放器的静音
aus.mute = true;
//上传对应的静音的图片
vioce_butt.GetComponent<Image>().sprite = Resources.Load<Sprite>("Sprite/voiceMute");
//存下点击静音时的进度条的值
value = (int)voice_slid.GetComponent<Slider>().value;
//进度条的value值为0
voice_slid.GetComponent<Slider>().value = 0;
}
else
{
//关闭音频播放器的静音
aus.mute = false;
//上传对应的不静音的图片
vioce_butt.GetComponent<Image>().sprite = Resources.Load<Sprite>("Sprite/voice1");
//进度条的值变为关闭静音前的值
voice_slid.GetComponent<Slider>().value = value;
//初始化点击次数
clickNum = 0;
}
});
}
声音的大小,和显示声音的大小
void voice()
{
//把进度条最大值改为100,最小值为0
//音频播放器的音量volume = 进度条的值 * 0.01f。(因为volume的范围为:0~1)
aus.volume = voice_slid.GetComponent<Slider>().value * 0.01f;
//音量的文本显示(为进度条的value值,value值是浮点型,这里显示成整型)
voice_text.GetComponent<Text>().text = ((int)voice_slid.GetComponent<Slider>().value).ToString();
}
三、最终效果
代码备注的也比较详细