音乐播放器的实现(五)—— 音量的加减和静音

41 篇文章 2 订阅
15 篇文章 1 订阅

音乐播放器的实现(五)—— 音量的加减和静音

传送门:
音乐播放器的实现(一)—— Audio Listener和Audio Source面板的介绍
音乐播放器的实现(二)—— UI面板的制作
音乐播放器的实现(三)—— 进度条控制、播放、暂停、上(下)一曲、播放时间和总时间显示
音乐播放器的实现(四)—— 歌曲列表、顺序播放、单曲循环、随机播放、自动下一曲
前言
这篇我们加入音量控制键,可以改变音量的大小,实现静音和非静音的切换。(完整工程见篇尾)
一、UI面板的制作
1、新建一个按钮、一个Slider和一个Text,调整好大小和位置,具体命名如下图,把Text文本框放置Slider下,使之成为Slider的一级子节点。
在这里插入图片描述
2、准备两张图片,用来做静音切换的显示。
在这里插入图片描述
二、核心代码
初始化相关控件和变量,主要运用Audio SourceMute(静音)和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();
    }

三、最终效果
在这里插入图片描述
代码备注的也比较详细,若文中存在错误或者描述不清的地方也请指正,欢迎评论区留言共同探讨,以上。

四、整个工程链接(分辨率800X500,自己切换一下)
链接: https://pan.baidu.com/s/1i2qyprBLbCU3bgj6G0oLqA
提取码: fvxq

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值