目录

使用 OBB 文件(Android)

OBB 和 Wwise IO 的概述

对于 Android 平台,当检查 Unity 选项 Player Settings > Publishing Settings > Split Application Binary 时,APK Expansion Files 用于封装工程素材。这样就有效地创建了一个有 .obb 扩展的 zip 文件,它包含 StreamingAssets 文件夹,里面包含 SoundBank。默认的 Android SoundBank 加载支持假定了 SoundBank 位于 APK 文件或 OBB 文件中。

如果您正在外部构造自己的 OBB 文件,请注意,给 AkSoundEngine.SetBasePath 的内部路径必须和 OBB 中的相同。OBB 文件必须是未压缩和未加密的,这样默认的 I/O 系统才能正常工作。如果不满足上述条件,则需要在持久数据路径中解压 OBB。用于解压缩的 CPU 成本太高,所以无法实时解压缩。

在内存中加载 SoundBank

或者,可以使用内存内(in-memory)加载 bank。在 AkMemBankLoader.cs 中提供了一个示例。此脚本尝试在场景开始时加载指定的 SoundBank,并在场景被销毁时将其卸载。要使用这个示例,需要进行以下更改:

  1. 将脚本作为组件,添加给任何需要加载 SoundBank 的游戏对象。
  2. 在 Inspector 中,将 SoundBank 的文件名输入到< b>Bank name 字段的脚本组件中。
  3. 在 Inspector 中,如果 SoundBank 是本地化的,选择 Is Localized Bank 选项。它将使用在 AkInitializer.cs 中定义的全局语言。
  4. 禁用任何其它 SoundBank 加载方法并保存场景。

两个方法 AkMemBankLoader.LoadNonLocalizedBank()AkMemBankLoader。对于非本地化和本地化的 SoundBank,也可以直接在代码中调用 LoadLocalizedBank()。

局限性

  • in-memory 方法不能加载包含流播放内容的 SoundBank。还有一种更好但难度更大的方法,即可以使用 low-level IO 钩子,用于将 zip 文件实时解压缩,以支持流和非流的 SoundBank。然而,这个例子将留作将来开发。用户可以自行实现这些钩子并重新构建集成。请参见 streamingmanager_lowlevel 小节。
  • 为了简单起见,示例脚本对于每个脚本组件只加载一个 SoundBank,但是可以很容易地将其扩展到一个基于集合的版本,该版本可以批量加载 SoundBank 列表。
  • 这个示例只封装了最简单的 in-memory SoundBank-loading API;有另一个基于回调的版本,您可以在需要时很容易地添加。在集成中已经有 API 绑定了。
Generated at Mon Jul 15 15:53:35 2019 for Wwise Unity Integration by  doxygen 1.6.3