说明:
目标:在游戏设置面板中调节多个种类的音效音量
①创建AudioMixer并配置
Assets右键Create→AudioMixer修改名称,例如AudioSetting
双击打开创建好的AudioSetting,打开是这样的面板,默认带一个Groups叫Master
我们希望能调节主音量,背景音,特效音三种,目前只有一个音轨,并不符合我们的要求,
需要新增两条音轨,比如叫背景音和特效音,点击Master后点右侧+加号新增音轨
创建好了之后,并不能直接在代码里控制他们,因为需要将它们暴露出去,暴露出去后才能在代码控制
下图中第二步选择以下英文
我们需要将这三个依次重复上面的步骤,选中,暴露为代码,修改名称,请记住名称(大小写有区别),代码中要用
当然,如果只需要控制一个主音量,请忽视新增的背景音和特效音
这里,为了好理解,我将这三个分别设置为Main,Bgm,Texiao
②将音效片段中OutPut 指定音轨
我们需要将Audio Source下的OutPut选中对应的音轨,
例如这个音效是背景音,就选中Bgm音轨,特效音就选中Texiao音轨
③将 AudioMixer和Slider建立连接
到了关键的一步,将以下代码挂在到画布上
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.Audio; 5 using UnityEngine.UI; 6 7 public class CanvasSitting : MonoBehaviour 8 { 9 public Slider slider; //滑动条 10 public AudioMixer audioMixer; //声音混合器 11 12 //控制主音量 13 public void ControlMainVolume(float v) 14 { 15 audioMixer.SetFloat("Main", v); 16 } 17 //控制背景音量 18 public void ControlBgmVolume(float v) 19 { 20 audioMixer.SetFloat("Bgm",v); 21 } 22 //控制特效音量 23 public void ControlTexiaoVolume(float v) 24 { 25 audioMixer.SetFloat("Texiao", v); 26 } 27 }
然后把滑动条和创建好的AudioMixer拖入代码公开变量中
请忽视滑动条和AudiMixer以外的变量
④配置Slider,并添加事件
此时需要更改三个Slider中的value值
将Min Value 设置为-80,这个值并不是固定的,可以手动微调,代表音量最小值
将Max Vlue 设置为0,这个代表音量最大值,也可手动调试
给三个滑动条分别添加对应的事件函数
点加号,将画布拖入,选择我们挂载在画布上代码,代码中有三个函数来分别控制着三个音量
注意会出现上下两个一样的名称,请选择Dynamic float下面的函数名称
到这里,完成了所有操作,请进入游戏试试音量调节吧.
补充:
当主音量没有声音时,其他的音量就算拉满也是没有声音的
拖动没效果,记得看一下音效OutPut是否选择了音轨
⑤实现效果