第 1 课

目录

加载 SoundBank

在发送 Wwise Event 之前,必须先向 SoundBank(音频包)添加 Event(事件)并加载到内存中。

[技巧]

有关如何向 SoundBank 添加 Wwise Event 的说明,请参阅 Wwise-101 认证课程

若要在 Unity 中加载 SoundBank,Wwise 必须获取以下两条信息:

  1. 被引用的游戏对象

  2. 触发方式

这些信息需要通过脚本来定义。在 Wwise Unity Integration 中,可将预先构建的 AkBank 脚本添加到游戏对象,从而使其成为关联游戏对象(传递第 1 条信息)。在 AkBank 组件中,可在 Load On 属性下选用各种方式来加载 SoundBank(传递第 2 条信息)。

[备注]

在将脚本添加到游戏对象时,会将其添加为组件。

对于《Wwise Adventure Game》,大部分声音都包含在 General SoundBank 内。要想在运行时播放这些声音,必须先加载该 SoundBank。我们可以通过配置 AkBank 组件来设定为根据各种各样的游戏动作加载 General SoundBank。不过,一般情况下会在游戏以 Awake 状态启动之前直接加载此 SoundBank。这样在游戏以 Start 状态启动时就可以发送各种声音事件。接下来,我们在《Wwise Adventure Game》中加载 General SoundBank,并确保其可在 Awake 状态下正常加载。

  1. 在 Unity 菜单栏中,依次选择 Audiokinetic > Certification > 301 > Lesson 1 > Loading a SoundBank

    [备注]

    Loading a SoundBank 场景是《Wwise Adventure Game》中的 Main 场景的副本。本项认证课程专门准备了多个场景,便于在练习当中根据需要添加或修改元素。这样也好在所提供的场景中随意尝试各种操作,而不用担心会影响到 Main 场景。

  2. 在 Unity 的 Hierarchy 视图中,展开 Wwise 并选中 GeneralSoundBanks 游戏对象。

    在 Unity 初始化时,系统会检查添加到各个游戏对象的所有脚本。假如发现有任何脚本包含 Unity 的 Script Lifecycle Flowchart 中列出的函数,将会按照特定的顺序来调用这些函数。遵照这样的执行顺序,我们可以将添加到 GeneralSoundBanks 游戏对象的 AkBank 脚本指派给 Awake,以便在 Unity 初始化时自动调用。

    我们可以使用 Wwise Picker 便捷地将 AkBank 脚本添加到游戏对象。这项标准的 Wwise Unity Integration 功能会列出关联 Wwise 工程中的可用对象,如 Event、SoundBank 和 Switch(切换开关)等等。在将这些 Wwise 对象拖到游戏对象上时,将会添加对应的集成组件,并向其自动指派对象。

    [备注]

    若要打开 Wwise Picker,请在 Unity 菜单栏中依次选择 Window > Wwise Picker。如需进一步了解 Wwise Picker,请访问 https://www.audiokinetic.com/library/edge/?source=Unity&id=unity__picker.html 页面。

  3. 在 Wwise Picker 中,依次展开 SoundBanks > Default Work Unit > General,然后将 General SoundBank 拖到 Inspector 中的 GeneralSoundBanks 游戏对象上。

    [备注]

    在将 SoundBank 拖到 Inspector 中时,确保拖动的是单独的 SoundBank 而非整个 Work Unit。

    [技巧]

    另外,也可使用 Add Component 来添加 AkBank 脚本,然后为对应的 Soundbank 指派 Bank Name。

    我们来看一下 Inspector。

    从上图可以看到,AkBank 脚本被添加到了 GeneralSoundBanks 游戏对象,同时 Bank Name 中显示目前选中了 General SoundBank。在默认情况下,Load On 属性设为 Start。不过,在《Wwise Adventure Game》中,在 Start 状态下应该已经发送了 Event 才对。为此,我们需要更改执行顺序,以便在游戏以 Awake 状态启动时加载该 SoundBank。通过将 Load On 属性设为 Nothing,可撤消之前选择的所有其他 Trigger,从而避免同时选中 StartAwake

    [技巧]

    倘若在 Start 状态下没有加载任何 Event,我们便可在 Start 状态下轻松加载 SoundBank。通过在 Awake 状态下加载 SoundBank 并在 Start 状态下发送 Event,可确保在发送 Event 之前加载 SoundBank。这种方法非常简便,不过在其他 Unity 工程中很可能并非如此。

  4. 打开 Load On 属性,然后选择 Nothing

  5. 再次打开,然后选择 Awake。

    搞定!一旦 Wwise 声音引擎开始初始化,便会自动加载 General SoundBank。在利用 Wwise 对游戏进行性能分析之前,我们先来生成 SoundBank。

  6. 切换到 Wwise,然后在 Layouts(布局)菜单中选择 SoundBank(音频包)。

  7. 在 SoundBank Manager(音频包管理器)中,单击 Generate All(全部生成)。

    接下来,我们连接 Profiler 并单击 Play,确保能够正常加载 SoundBank。只要打开了《Wwise Adventure Game》并在运行 Wwise 声音引擎,就算不在 Play 模式下也可进行互连。

  8. 切换回 Wwise,然后从 Layouts 菜单中选择 Profiler(性能分析器)。

  9. 在工具栏中,单击 Remote…(远程...)。

  10. 在 Remote Connections(远程连接)视图的 Available(可用)选项卡中,双击 Wwise Adventure Game (Editor)

  11. 在 Unity 中,单击 Play

    一旦进入 Play 模式,Profiler 就会知道已经加载了哪些 SoundBank;我们现在就可以在 Wwise Profiler 中验证一下。

  12. 按下 ESC 打开 WAG (Wwise Adventure Game) 游戏菜单,然后再次单击 Play 按钮退出 Play 模式。

  13. 切换到 Wwise,然后在 Advanced Profiler(高级性能分析器)中选中 Memory(内存)选项卡。

  14. 在 Performance Monitor(性能监控器)中,往回拖动时间光标,直到 Memory 选项卡中显示 General SoundBank。

    在 Advanced Profiler 中,我们会在列表中看到 General SoundBank 以及 Wwise 的所有其他内存分配情况。假如 Memory 选项卡的列表显示了 SoundBank,我们就可确定已将该 SoundBank 加载到内存中,并可发送其所包含的 Event。

[备注]

系统不会保存在 Play 模式下执行的任何修改。因此,请务必先退出 Play 模式再执行其他章节中的练习步骤,以免丢失这些步骤中所作的修改。在本次练习中,我们已经提醒过要注意退出 Play 模式。在后面章节中,希望您记得禁用 Play 按钮(离开 Play 模式)。

第一步完成了。下一步,播放声音。