unity3D AudioMixer+Slider实现音量调节,多音效控制(主音量,背景音,特效音等)

说明:

目标:在游戏设置面板中调节多个种类的音效音量

①创建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是否选择了音轨

⑤实现效果

 

时间若流水,恍惚间逝去
原文地址:https://www.cnblogs.com/alanshreck/p/14746347.html