Unity Audio Mixer 音乐开关以及优化

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

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

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

unity支持音乐格式

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

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


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


AudioMixer

二.挂载AudioMixer。

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


Output

三.AudioMixer提供外部参数

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

外部调用参数

四.代码控制开关

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

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

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

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

五.优化音乐文件大小


修改audioSource设置

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS 苹果官方Demo合集 字数10517阅读21059评论18喜欢144 其实, 开发了这么久, 不得不说, ...
    bingo居然被占了阅读 13,544评论 2 31
  • The Audio Listener acts as a microphone-like device. It r...
    Moment__格调阅读 6,238评论 0 1
  • 原文地址 http://www.fx114.net/qa-75-172454.aspx 使用Profiler工具...
    IongX阅读 11,279评论 1 11
  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 9,380评论 0 9
  • 喝酒之后的感觉,你们知道吗,很晕,但是自己认为很清醒。我在不断的说出自己的思想,期待着别人也说点什么,同时又理智的...
    w夭夭阅读 1,616评论 1 1

友情链接更多精彩内容