提高游戏性能的音频提示(Unity)

要知道优化声音可以极大地提升Unity游戏性能。想知道如何?让我们看看如何正确使用它来提高游戏的整体性能。
音频系统:
音频在创造良好的用户体验方面发挥着重要作用。一般来说,我们的游戏中有很多音频,在每个平台上管理它们并不是一件容易的事情。大多数游戏都会播放背景音乐并有音效。
音效是与游戏中的动作一起播放的短片段(例如玩家开火时播放的枪声),而音乐的声音片段则较长。
因此, Unity 具有音频功能,以便您可以将音效和音乐放入游戏中。 Unity 可以导入和播放各种音频文件格式、调整声音音量,甚至可以处理从场景内特定位置播放的声音。
音频瓶颈可能有多种来源。过度压缩、过多的音频处理、过多的活动音频组件、低效的内存存储方法和访问速度都会导致内存和 CPU 性能不佳。
因此,我们将学习一些有用的技巧来避免用户体验灾难。
加载音频文件:
我们的音频文件最初打包为二进制数据文件,与我们的应用程序捆绑在一起,驻留在设备的硬盘上。加载音频数据只是意味着将其拉入主内存 (RAM),以便稍后可以由音频解码器处理,然后音频解码器将数据转换为音频信号发送到我们的耳机或扬声器。然而,加载的发生方式将根据三个设置而有很大差异:
预加载音频数据
在后台加载
负载类型
如果使用不当,所有这三个设置都会对性能产生巨大的负面影响。
启用预加载音频数据后,场景中分配给 AudioSouce 的每个音频剪辑都将在场景初始化期间加载到内存中,因为场景包含对这些文件的直接引用,从而导致更多加载时间。
禁用预加载音频数据告诉Unity引擎在场景初始化期间跳过音频文件资源加载,这将加快场景初始化速度,但这也意味着我们第一次播放文件时,CPU将需要立即访问磁盘,检索文件,加载到内存,解压,然后播放。这是一个同步操作,将阻塞主线程直到完成。
这就是“在后台加载”选项的用武之地。这会将音频加载更改为异步任务,这意味着加载不会阻塞主线程,但请记住,在加载完成之前,文件不会准备好播放。单独的线程。
如果启用了“后台加载”,并且我们在不先加载数据的情况下调用 AudioSource.Play(),Unity 仍会要求将文件加载到内存中才能播放,因此在我们调用 AudioSource 之间会存在延迟。 Play() 以及音频文件何时开始播放。如果我们尝试在声音文件完全加载之前访问该声音文件,则可能会引入不和谐的行为,从而导致它与其他任务(例如动画)不同步。
负载类型:
我们有一个“加载类型”选项,它决定音频数据发生时如何加载。有以下三个选项可供选择:
加载时解压:
压缩在内存中:
流媒体:
编码格式和质量级别:
Unity 支持音频剪辑的三种通用编码格式。
压缩的
相变材料
ADPCM
我们导入到 Unity 引擎中的音频文件可以是许多流行的音频文件格式之一,例如 Ogg Vorbis、MPEG-3 (MP3) 和 Wave,但捆绑到可执行文件中的实际编码将转换为不同的格式。
“压缩”设置所使用的压缩算法将取决于目标平台。独立应用程序和其他非移动平台会将文件转换为 Ogg Vorbis 格式,而移动平台则使用 MP3。
加载后音频文件在运行时将消耗多少内存将取决于所选的效率压缩格式为。
使用的编码/压缩格式会对运行时音频文件的质量、文件大小和内存消耗产生巨大影响,只有“压缩”设置使我们能够在不影响文件采样率的情况下改变质量。同时,PCM 和 ADPCM 设置无法提供这种奢侈,并且我们只能使用这些压缩格式决定提供给我们的任何文件大小 - 也就是说,除非我们愿意通过减少文件大小来降低音频质量。采样率。
压缩:
ADPCM:
相变材料:
压缩、PCM 和 ADPCM 压缩格式各有其优点和缺点。在适当的情况下,可以对不同文件使用不同的编码格式,在内存占用、磁盘占用、CPU 使用率和音频质量方面做出一些妥协。我们应该愿意在同一个应用程序中使用所有这些文件,并提出一个适用于我们正在使用的各种音频文件的系统,这样我们就不需要单独处理每个文件。
请始终确保要导入 Unity 的文件采用未压缩格式,例如 WAVE (.wav) 或 AIFF (.aiff)。许多压缩格式都是有损的。如果您将 MP3 或 Vorbis 等压缩文件导入 Unity,Unity 会首先将其解码为未压缩的格式,然后将其重新编码为您选择的格式 — 即使它与您开始使用的格式相同。单核细胞增多症
声音通常以立体声录制,文件中实际上有两个波形,左耳和右耳/扬声器各一个。在立体声音频文件上启用“强制单声道”设置会将两个音频通道的数据混合到一个通道中,以便将相同的波形发送到两个扬声器,而不是将单独的波形发送到左右扬声器,从而节省 50% 的文件时间有效地使用总磁盘和内存空间。对于某些 2D 音效来说,启用此选项通常不是一个好主意,其中立体声效果通常用于创建特定的音频体验。
强制 2D 声音(如果不需要立体声效果,以全音量播放到玩家耳朵中的声音(无论与音频源的距离/方向如何)到单声道也可能有意义。
重采样至较低频率:
将导入的音频文件重新采样到较低的频率将减少文件大小和运行时内存占用。这可以通过将音频文件的采样率设置设置为覆盖采样率来实现,此时我们可以通过采样率选项配置采样率。在大多数情况下,较低的设置可以减小文件的大小,而不会明显降低质量。找到最适合您的音频的数字并使用它。
音频提示:
正确使用音频源优先级。
对非必要的声音使用“在后台加载”。
使用预加载音频数据来节省内存。
禁用音频源组件而不是使用静音。
使用 PCM 可以节省大量内存,而几乎不会增加音频 CPU 负载。