Unity AudioMixer 之 Mixer使用及统一管理音量

百度经验

页面数据加载中...

qxkzuiai512

Unity AudioMixer 之 Mixer使用及统一管理音量。在Unity中, Audio Mixer 基本使用,以及通过使用 Audio Mixer 统一管理游戏场景中的音量调节的案例,具体方法如下

1/21

打开 Unity,新建一个空工程,然后向工程导入一些音频文件,具体如下图

2/21

在场景中,新建GameObject,修改名字为 BackgroundMusic,并添加一个 AudioSource,勾选 Loop,然后把 BackgroundMusic 音频文件赋值上去,具体如下图

3/21

同理新建 SoundEffect_One,和 SoundEffect_Two,添加 AudioSource,取消勾选 Play On Awake,并把对应音频赋值上去,具体如下图

4/21

在工程中新建脚本 PlaySoundEffect_One,用来监控按下 E 键,播放 SoundEffect_One 音效,并把脚本挂载到场景中的 SoundEffect_One 游戏物体上 ,具体如下图

5/21

PlaySoundEffect_One 脚本具体内容如下:using UnityEngine; public class PlaySoundEffect_One : MonoBehaviour{    // 音频源组件参数    private AudioSource audioSource;     void Start()    {        // 获取音频源组件        audioSource = GetComponent<AudioSource>();    }     void Update()    {        // 监控按下 E 键,进行特效音的播放        if (Input.G
PlaySoundEffect_One 脚本具体内容如下:using UnityEngine; public class PlaySoundEffect_One : MonoBehaviour{    // 音频源组件参数    private AudioSource audioSource;     void Start()    {        // 获取音频源组件        audioSource = GetComponent<AudioSource>();    }     void Update()    {        // 监控按下 E 键,进行特效音的播放        if (Input.GetKeyDown(KeyCode.E))        {            audioSource.Play();            }    }}
etKeyDown(KeyCode.E))        {            audioSource.Play();            }    }}

6/21

同理新建 脚本 PlaySoundEffect_Two,按下 Q 键播放 SoundEffect_Two 音频,并把脚本挂载到 到场景中的 SoundEffect_Two 游戏物体上,具体如下图

7/21

PlaySoundEffect_Two 脚本具体内容如下:using UnityEngine; public class PlaySoundEffect_Two : MonoBehaviour{    // 音频源组件参数    private AudioSource audioSource;     void Start()    {        // 获取音频源组件        audioSource = GetComponent<AudioSource>();    }     void Update()    {        // 监控按下 Q 键,进行特效音的播放        if (Input.G
PlaySoundEffect_Two 脚本具体内容如下:using UnityEngine; public class PlaySoundEffect_Two : MonoBehaviour{    // 音频源组件参数    private AudioSource audioSource;     void Start()    {        // 获取音频源组件        audioSource = GetComponent<AudioSource>();    }     void Update()    {        // 监控按下 Q 键,进行特效音的播放        if (Input.GetKeyDown(KeyCode.Q))        {            audioSource.Play();        }    }}
etKeyDown(KeyCode.Q))        {            audioSource.Play();        }    }}

8/21

然后运行场景,背景音乐正常播放,分别按下 Q 或者 E,对应播放音效,具体如下图

9/21

在场景中添加UI,用来控制音量的调节,具体的UI布局如下图

10/21

然后在工程中右键 Create -- Audio Mixer,然后创建一个 Audio Mixer ,修改名称为 MasterMixer,具体如下图

11/21

双击 MasterMixer,显示 Mixer 编辑窗口,然后点击 “Group”后面的 “+”,添加两个组,分别命名为 BackgroundMusic 和 SoundEffect,具体如下图

12/21

接着把 MasterMixer 中新添加的  BackgroundMusic 和 SoundEffect 组,分别赋值给场景中的 BackgroundMusic 和 SoundEffect 游戏物体的 AudioSource 中的 output,具体如下图

12/21

本页面未经授权抓取自百度经验

本页面未经授权抓取自百度经验
本页面未经授权抓取自百度经验

13/21

选中 MasterMixer 中的 Master,在 Inspector 中的 Attenuation 中的 Volume 右键 勾选 Expose ‘Volume(of Master)’to script,把 Master 音量调节的参数暴露出来,具体如下图

14/21

然后点击 Audio Mixer 的编辑面板上的 Exposed Parameters ,就会看到之前 Expose 的参数,右键 Rename,命名为 “MasterVolume”,便于后期代码控制,具体如下图

15/21

同理把 MasterMixer 中的 BackgroundMusic 和 SoundEffect 中的同样暴露Volume,并且重新命名,结果如下

16/21

在工程中新建脚本 AudioMixerManager,用来控制之前暴露出来的 Volume 参数,通过脚本,调节音量大小,具体如下图

17/21

AudioMixerManager 脚本的具体内容如下:using UnityEngine;using UnityEngine.Audio; public class AudioMixerManager : MonoBehaviour{    // 进行控制的Mixer变量    public AudioMixer audioMixer;     /// <summary>    /// 控制主音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetMasterVolume(float volume)       
AudioMixerManager 脚本的具体内容如下:using UnityEngine;using UnityEngine.Audio; public class AudioMixerManager : MonoBehaviour{    // 进行控制的Mixer变量    public AudioMixer audioMixer;     /// <summary>    /// 控制主音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetMasterVolume(float volume)        {        // MasterVolume为我们暴露出来的Master的参数        audioMixer.SetFloat("MasterVolume", volume);           
{        // MasterVolume为我们暴露出来的Master的参数        audioMixer.SetFloat("MasterVolume", volume);            }     /// <summary>    /// 控制背景音乐音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetBackgroundMusicVolume(float volume)        {        // MusicVolume为我们暴露出来的Music的参数        audioMixer.SetFloat("BackgroundMusicVolume", volume);            }     /// <summary>    /// 控制音效音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetSoundEffectVolume(float volume)        {        // SoundEffectVolume为我们暴露出来的SoundEffect的参数        audioMixer.SetFloat("SoundEffectVolume", volume);            }}
}     /// <summary>    /// 控制背景音乐音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetBackgroundMusicVolume(float volume)        {        // MusicVolume为我们暴露出来的Music的参数        audioMixer.SetFloat("BackgroundMusicVolume", volume);            }     /// <summary>    /// 控制音效音量的函数    /// </summary>    /// <param name="volume"></param>    public void SetSoundEffectVolume(float volume)        {        // SoundEffectVolume为我们暴露出来的SoundEffect的参数        audioMixer.SetFloat("SoundEffectVolume", volume);            }}

18/21

脚本编译正确后,回到 Unity,然后在场景中,新建 GameObject,把脚本 AudioMixerManager 挂载上去,把 MasterMixer 进行赋值,具体如下图

19/21

然后把 UI 中的Master、BackgroundMusic、SoundEffect 对应调节Slider添加事件,分别添加 SetMasterVolume 、SetBackgroundMusicVolume、SetSoundEffectVolume 函数接口事件,具体如下图

20/21

由于 AudioMixer 的音量调节的数值为 -80,20,所以对应的 UI 中的Master、BackgroundMusic、SoundEffect 的调节Slider 的 Min Value 和 Max Value 分别调整为 -80,20,具体如下图

21/21

运行场景,这样就可以通过调节对应的Slider 进行音量大小的调节了,具体如下图

Unity AudioMixer 之 Mixer使用及统一管理音量

Unity AudioMixer 之 Mixer使用及统一管理音量

[重新阅读]
辅助模式