音乐音效对于游戏来说是必不可少的一环,大部分游戏都有音乐音效开关,5.0之前,大部分游戏开发者都是用代码控制音乐与音效的开关。5.0之后unity加入了AudioMixer混音器系统,使得做法更加简单。
AudioMixer功能很多也很强大,我们在这里只用它一部分的功能,控制整个游戏的音乐音效的开关以及大小,同时对音乐文件进行优化,减少包体大小。
首先我们来看一下unity支持的音乐文件,一般背景音乐建议使用.mp3与.ogg,而音效则可以使用.aiff,一般我会使用一些工具来压缩截取和改变音乐格式来供游戏使用,两个轻量级的工具MAC:Sound Studio,PC:gold wave。
![](https://img.haomeiwen.com/i2461504/fbd1e7f6b071b370.png)
AudioMixer意为混音器,我们将其作为开关的原理就是将所有音乐放入同一音轨,需要关闭只需要对这个音轨进行操作就行。
一.首先右键Assets创建AudioMixer对象。
![](https://img.haomeiwen.com/i2461504/484fb50823c3c9ac.png)
可以这么简单的理解,一个AudioMixer就是一个音乐开关,游戏内,我使用了两个AudioMixer,一个用作管理背景音乐,一个用作管理音效。创建好的AudioMixer如下图。
![](https://img.haomeiwen.com/i2461504/875cb2d6f0b764d5.png)
二.挂载AudioMixer。
游戏内创建AudioSource后,将其Output挂载上刚刚我们创建好的AudioMixer。当前AudioSource受AudioMixer影响。
![](https://img.haomeiwen.com/i2461504/893a2fb560a0dbf9.png)
三.AudioMixer提供外部参数
如图,在AudioMixer设置界面,点击Exposed Parameters 输入参数,以便脚本控制当前音轨。
![](https://img.haomeiwen.com/i2461504/2a1e9c691aabda89.png)
四.代码控制开关
首先脚本中获取到所需要更改的AudioMixer, 调用刚刚设置好的外部参数,脚本如下:
AudioMixer.SetFloat("VolumeMaster",0.0f);//声音开
AudioMixer.SetFloat("VolumeMaster",-100.0f);//声音关
其实可以看出,其实我们声音开关只是将这条音轨的音量降低。
五.优化音乐文件大小
![](https://img.haomeiwen.com/i2461504/847b9b2776f0db27.png)
取消勾选preload audio data选项,勾选安卓环境下的override for andriod选项,并设置load type为streaming。
* 这里禁用的预加载音频preload audio data,减少加载时间。设置load type为streaming,音频剪辑将放入缓冲区,从缓冲区中播放,播放完成后,被卸载,释放内存。
也可以将使用频繁的音频设置load type为decompress on load,在加载时解压,这样会更流畅一些,当然只是用于频繁使用的音频即可。
之前项目音乐文件没优化,光音乐内存就占了50M,优化后小了几十倍- -
网友评论