【音效】Unity 性能 Review

发表于2018-01-16
评论0 1.7k浏览

本文首发于知乎专栏:MACK的游戏开发笔记,欢迎各位关注。



这里记录了一些Unity音频性能的优化点,有些会当作规范在每个版本尾期检查,提升一些性能(主要是内存)。Unity的音频使用的是集成过的FMOD。一开始我对音频进行了进一步的封装,一方面可以方便的集成到CMT中,另一方面提供了一行代码就可以播放音效的接口。不过在项目中期为了更好的效果和开发效率,我们改成了FMOD Studio

 

FMOD StudioUnity编辑器解耦,自带可视化的事件参数编辑系统,实时的联调界面和性能分析工具,支持更高级的混淆效果等等。其实我也不了解。。。程序只要抛出事件,音频开发就可以在Studio中可视化编辑,包括一些随机逻辑,分组管理,降低或加强某些音效等等,可以减少很多程序的开发量也更灵活。不过不得不说,在热更,性能,已经和Unity编辑器集成度上还有花了一点精力踩了一些坑。特别是P4的只读属性的问题,在集成到我们的自动构建系统上搞到了半夜。。。

 

另外需要注意的时,如果使用了第三方的插件,可以关闭Unity的音效引擎减小性能开销:

 

FMOD的插件有一些GC问题,播放音效和设置参数的接口都存在一个字符串拼接产生的GC开销,另外FMOD的调试窗口使用OnGUI不管是否开启都会产生C++C#的开销,并且获得是否现实调试窗口也会产生固定的GC

 

 

 

下面是很久以前使用Unity自带FMOD时,优化检查的设置:

 

音乐设置:

Force to Mono:关闭立体声音效减小一倍。

Preload Audio Data:预加载减少卡顿,打开

LoadTypeDecompress On Load,加载后解压缩。一般用于较小的音效,避免运行时解压缩的性能开销。

Compression Formatios平台建议mp3压缩格式(Ios设备自带mp3的硬件解码器)android平台推荐vorbis压缩格式。

Quality:播放质量可以降低质量减少包体和内存占用。

 

LoadTypeCompressedIn Memory,播放时解压,在内存中时压缩的,增加CPU开销但节省内存。用在一些较大的文件并且不经常播放。如果是BGM要设置成Stream from disc从磁盘流读取,节省内存。

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签:

0个评论