zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    算法市场 Algorithmia
    Cucumber
    TeamCity 持续集成工具
    自动化测试
    Selenium
    Android耗时操作
    RecyclerView
    Android报错
    Lakeshore
    BaaS_后端即服务 RESTful
  • 原文地址:https://www.cnblogs.com/nickcan/p/13019161.html
Copyright © 2011-2022 走看看