版本

menu_open
目标平台:
Wwise Unity Integration Documentation
有关 Android 的特定信息

针对 Android 构建

APK 中包含的 Android 的 SoundBank 可以直接通过 LoadBank() API 访问。当构建 Unity 工程时,放置在 StreamingAssets 文件夹中的 SoundBank 会包含在该 APK 的 Assets 文件夹中。Low-Level IO 可以透明方式从 APK 访问 SoundBank。

Low-Level IO 也可以访问 Android 文件系统中的 SoundBank 文件,例如访问 SD 卡中的文件。若要访问原生文件系统,需调用 AkUnitySoundEngine.AddBasePath(YourPath) 。这条新路径在优先级上高于默认的 APK 文件。如果一个文件在外部路径和 APK 中具有相同的名称,那么将使用外部路径。若在构建 APK 后向音频内容添加 DLC 或补丁,实现对外部文件的访问可能会很有用。

背景模式

在将应用程序转到后台时,建议调用 AkUnitySoundEngine.Suspend() 。在应用程序返回前台时,使用 AkUnitySoundEngine.WakeupFromSuspend() 来恢复声音。目前,这是在 AkInitializer 中实现的,但是如果合理的话,您可以将它移动到游戏的其它部分。

将背景音乐静音

Wwise 设计工具设有用于将 Audio Bus 上的背景音乐静音的选项。You can use this option to mute game music when a player's music starts (refer to Replacing music with a player's own music). 不过,若在启用此选项的同时在 Android 上启用 Unity Audio,会一直将通过总线发送的音乐静音。

为此,必须决定是使用 Wwise 设置将背景音乐静音还是启用 Unity Audio,因为两者相互之间是不兼容的。

使用 OBB 文件

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 文件,请注意,给 AkUnitySoundEngine.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。然而,这个例子将留作将来开发。用户可以自行实现这些钩子并重新构建集成。
  • 为了简单起见,示例脚本对于每个脚本组件只加载一个 SoundBank,但是可以很容易地将其扩展到一个基于集合的版本,该版本可以批量加载 SoundBank 列表。
  • 这个示例只封装了最简单的 in-memory SoundBank-loading API;有另一个基于回调的版本,您可以在需要时很容易地添加。在集成中已经有 API 绑定了。
参见

此页面对您是否有帮助?

需要技术支持?

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

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

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

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

开始 Wwise 之旅