版本

menu_open

底层引擎内存池

Lower Engine Memory Pool(底层引擎内存池)中的内存用于播放声音,它直接受同时播放的声音数量影响,还会受同时使用的效果数量和类型影响。因此,为了削减该内存池用量,需要先弄清楚同时希望听到多少声音。有些游戏很少同时听到超过 10 种声音,而有些游戏则会同时听到 100 种。设置内存池大小时,请使用游戏中的最差情况。

这个比例大致呈线性,但实际还取决于编解码器类型、效果器数量和其它因素。

还需要明确的一点是,同时播放 170 种声音是否对游戏有益。当声音达到一定数量后,人耳将无法辨别不同声音,它们将沦为噪声。您需要弄清楚最适合游戏的声音数量,当然这需要实验。您可以对游戏中的多个场景进行 Profile(性能分析),并使用 Advanced Profiler(高级性能分析器)的 Memory(内存)选项卡来观察资源占用情况。

为降低 Lower engine memory pool(底层引擎内存池)占用,需要减少同时发声的声部数量。通过以下策略可以实现:

  • Playback Limits(播放数量限制),位于 Advanced Settings(高级设置)中。比如说,真的需要听到 50 个子弹纷飞的声音吗?很可能不用,您可以将其限制在合理数量,比如 15 个。注意,也可以对总线设置该限制。

  • Playback Priority(播放优先级),位于 Advanced Settings(高级设置)中。比如说,子弹声没有对话声重要,那么声音过多时,可以首先去掉子弹声。优先级可以跟播放数限制结合使用。

  • Distance-based Priority Offset(基于距离的优先级偏置),位于 Advanced Settings(高级设置)中。远距离对象通常不如较近的对象重要,比如说,如果近处有 15 个子弹声,就不需要听到 10 米开外的子弹声了。

  • Memory Threshold(内存阈值),在 SDK 中设置。初始化声音引擎内存池时,您可以指定其总大小的某个百分比作为内存阈值,占用达到这个百分比时,会根据优先级顺序终止声部。这样内存就有了一个强制界限,几乎所有的内存不足情况都可以通过这种可控方式来避免。请注意,由于存在内存碎片,因此内存不可能全部占用,所以开始设置的阈值最好是内存池大小的 0.9 或 90%。

  • Volume Threshold(音量阈值),位于 Project Settings(工程设置)中。通过音量阈值可以终止微弱而无法听到的声音,它可以与 Below Threshold Behavior(低于音量阈值行为)一起使用,和 Attenuation(距离衰减)也紧密关联,因为通常声音都是越远越微弱。音量阈值默认值为 -80。

  • Below Volume Threshold Behavior(低于音量阈值行为),位于 Advanced Settings(高级设置)中。最节省资源(CPU 和内存)的选项是“Kill Voice(终止声部)”,这对很短的声音或循环环境声很实用,会终止声部,但不会终止循环。第二个更好的选项是“Send To Virtual(发送至虚声部)”+“Play from beginning(从头播放)”,然后是“Send To Virtual”+“Resume(恢复)”,然后是“Send To Virtual”+“Play from elapsed time(从剩余时间开始播放)”。“Continue to play(继续播放)”和“Play from elapsed time”是最耗费资源的选项。请注意,“Continue To Play”是 Wwise 的默认设置。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅