Unity-音频资源小结

原理

Compression Format 压缩格式

文件体积=原始文件体积x压缩率

  1. Vorbis
    压缩率大(3-40:1),解码慢
  2. ADPCM
    压缩率小(3.5:1),解码速度较快
  3. PCM
    未压缩,解码速度最快,体积最大
Load Type 加载方式

内存占用取决于加载音频的方式。以下方式,内存占用从大到小,cpu消耗从小到大。还是时间和空间的抉择。

  1. Decompress On Load
    加载后直接全部解压到内存中,所以内存占用最多,直接就是音频资源大小(未压缩),也因此后续再播放时cpu性能消耗最小。只用于很小的音效。
  2. Compressed In Memory
    加载文件到内存中,不解压,用到时再解压,所以内存占用一般,就是音频文件大小(压缩后),外加解压缩用的缓存。
  3. Streaming
    播放时,循环从磁盘读取一部分,解压,播放。内存占用只有用于缓存的200KB左右,cpu消耗最大,内存占用最小。

目标

以下应该根据项目体量,权衡一个具体值。

  1. 文件体积尽可能小
    ImportedSize多大,文件体积就是多大。
  2. 内存占用尽可能小
    合理设定音频导入设置,常用短音频可以考虑牺牲一部分内存来换取加载速度。
  3. 效果能接受

实践

  1. forceMono=true
  2. 如果加载方式不是Streaming, 则loadInBackground=false
    这个选项虽然不会阻塞线程,但是音效可能延迟出现,音效一般都频繁且短,延迟播放那不乱套了
  3. preloadAudioData=false
    不要让声音加载阻塞场景
  4. 压缩格式和加载方式(伪代码)

长度>10: Streaming, Vobis, quality=0.01

1<=长度<=10: CompressedInMemory

需要很快响应: ADPCM
不需要很快响应: Vorbis, quality=0.01

长度<1:

需要很快响应: DecompressedOnLoad
不需要很快响应: CompressedInMemory, ADPCM

参考

Unity官方文档-Audio Profiler module 性能分析器
Unity官方文档-Audio Clip
Unity音频优化总结脑图

Unity音频优化总结脑图1
Unity音频优化总结脑图2

posted @ 2020-05-31 15:29  尼克多摩雄  阅读(819)  评论(2编辑  收藏  举报