Unity Audio Mixer 音乐开关以及优化

       音乐音效对于游戏来说是必不可少的一环,大部分游戏都有音乐音效开关,5.0之前,大部分游戏开发者都是用代码控制音乐与音效的开关。5.0之后unity加入了AudioMixer混音器系统,使得做法更加简单。 

        AudioMixer功能很多也很强大,我们在这里只用它一部分的功能,控制整个游戏的音乐音效的开关以及大小,同时对音乐文件进行优化,减少包体大小。

        首先我们来看一下unity支持的音乐文件,一般背景音乐建议使用.mp3与.ogg,而音效则可以使用.aiff,一般我会使用一些工具来压缩截取和改变音乐格式来供游戏使用,两个轻量级的工具MAC:Sound Studio,PC:gold wave。

Unity Audio Mixer 音乐开关以及优化_第1张图片
unity支持音乐格式

        AudioMixer意为混音器,我们将其作为开关的原理就是将所有音乐放入同一音轨,需要关闭只需要对这个音轨进行操作就行。

一.首先右键Assets创建AudioMixer对象。


Unity Audio Mixer 音乐开关以及优化_第2张图片

       可以这么简单的理解,一个AudioMixer就是一个音乐开关,游戏内,我使用了两个AudioMixer,一个用作管理背景音乐,一个用作管理音效。创建好的AudioMixer如下图。


Unity Audio Mixer 音乐开关以及优化_第3张图片
AudioMixer

二.挂载AudioMixer。

       游戏内创建AudioSource后,将其Output挂载上刚刚我们创建好的AudioMixer。当前AudioSource受AudioMixer影响。


Unity Audio Mixer 音乐开关以及优化_第4张图片
Output

三.AudioMixer提供外部参数

       如图,在AudioMixer设置界面,点击Exposed Parameters 输入参数,以便脚本控制当前音轨。

Unity Audio Mixer 音乐开关以及优化_第5张图片
外部调用参数

四.代码控制开关

     首先脚本中获取到所需要更改的AudioMixer,  调用刚刚设置好的外部参数,脚本如下:

AudioMixer.SetFloat("VolumeMaster",0.0f);//声音开

AudioMixer.SetFloat("VolumeMaster",-100.0f);//声音关

其实可以看出,其实我们声音开关只是将这条音轨的音量降低。

五.优化音乐文件大小


Unity Audio Mixer 音乐开关以及优化_第6张图片
修改audioSource设置

取消勾选preload audio data选项,勾选安卓环境下的override for andriod选项,并设置load type为streaming。

* 这里禁用的预加载音频preload audio data,减少加载时间。设置load type为streaming,音频剪辑将放入缓冲区,从缓冲区中播放,播放完成后,被卸载,释放内存。

也可以将使用频繁的音频设置load type为decompress on load,在加载时解压,这样会更流畅一些,当然只是用于频繁使用的音频即可。

之前项目音乐文件没优化,光音乐内存就占了50M,优化后小了几十倍- -

你可能感兴趣的:(Unity Audio Mixer 音乐开关以及优化)