为了克服 LoadBank() 机制的一些缺点,您可以先采用 Prepare 操作来"预备" SoundBank 而不是使用 AkBankContent_All() 加载它们(译注:为了突出 Prepare 是一种 API 调用,文档尽量用英语原文来代表这种预备操作,而不做通篇翻译)。在使用此方法时,SoundBank 仍可包含所有内容类型(事件、结构数据和媒体文件);但是,此方法不是立即加载媒体文件,而是通过使用 PrepareEvent() 机制来将所有媒体加载到内存中。通过使用此机制加载媒体,Wwise 首先查看媒体文件是否已经存在内存中,然后再加载它。这可以避免内存中出现媒体文件重复,从而将内存占用保持在最低水平。
除了可以节省内存外,此方法还可以保证顺序访问磁盘,这将避免在使用 PrepareEvent() 中一次 Prepare 一个 Event 时可能发生的随机磁盘寻址。
下图演示了“Prepare Bank(All Content)”(预备 SoundBank(全部内容))机制如何将元数据和内容加载到平台内存中。
在加载带 Vorbis 编码媒体的 SoundBank 时,可以使用 Preparation_LoadAndDecode 这个预备类型将这些媒体文件解码成非压缩 PCM 文件。这会使 SoundBank 体积变大,但当事件调用媒体文件时,将立即播放而无需进行解码。