Inspector窗口显示多个导入设置。这些设置决定了:加载行为,压缩行为,质量,采样率,以及是否支持双声道音频。
Unity可通过以下3中设置可以指定音频文件的加载方式:
Decompress On Load(加载时解压缩): 此设置压缩磁盘上的文件以节省空间,并在首次加载时将其解压到内存中。这是加载音频文件的标准方法,应该在大多数情况下使用。
解压文件需要一段时间,这会导致加载过程中的额外开销,但会减少播放音频文件时所需的工作量。
Compressed In Memory(内存中保持压缩状态):此设置在加载音频时只是将其从磁盘复制到内存中。只有在播放音频文件时,才会在运行期间对其进行解压缩。
这将在播放音频剪辑是牺牲运行时CPU,但在音频剪辑保持休眠状态是,提高了加速度,减少了运行时内存消耗。
因此,此选项最适合频繁使用的大型音频文件,或者在内存上晕倒难以置信的瓶颈,并且愿意牺牲一下CPU周期来播放音频剪辑
Streaming(流): 此设置将在运行时加载,加密和播放文件,具体做法是逐步将文件推过一个小缓冲区,在缓冲区中一次只存在整个文件的一小部分。
此方法对特定音频剪辑使用的内存量最小,但运行时CPU使用的内存量最大。由于文件的每个回放实例都需要自己的缓冲区,因此此设置有一个不幸的缺点,即多次引用音频剪辑,会导致内存中同一音频剪辑的多个副本必须单独处理,如果胡乱使用,会导致运行时CPU成文。因此此选项最后用于定期播放的单实例音频剪辑,这种音频剪辑不需要与自身的其他实例或甚至与其他流式音频剪辑重叠。例如,此设置最后与背景音乐和环境音效一起使用,这些音效需要在场景的大多数时间里播放。
小结: 默认情况下,弃用Preload Audio Data,禁用Load In Background以及使用Decompress On Load的加载类型会导致场景加载时间过长,但可以确保在需要时理解准备好场景中的每个音频剪辑。当需要音频剪辑时,不会有加载延迟,音频剪辑将在调用Play()时播放。缩短场景加载时间的一个很好的折中方法是,为以后才需要的音频剪辑弃用Load In Background,但这不应该用于场景初始化后不久就需要的音频剪辑。然后通过AudioClip.LoadAudioData() 和 AudioClip.UnloadAudioData()手动控制音频数据加载的时间。可以在一个场景中使用所有方法,已达到最佳性能。
Unity 支持3种音频剪辑编码格式,在Inspector面板汇总查看音频剪辑属性是,由Compression Format选项决定哪种格式:
Compressed :压缩算法取决于使用目标平台
