第 3 课

目录

按照场景拆分 SoundBank

[备注]

在开始学习本节课程之前,请务必先完成前面的“利用 Trigger 加载 SoundBank”章节。

通常,我们会按照序列、情节或关卡拆分游戏内容,以此合理地构建游戏结构;《Wwise Adventure Game》也不例外。目前,在进入 Woodlands Trigger 游戏对象时,将会加载 Woodlands SoundBank。

这种方式对有些游戏来说特别适用,而且设置起来也非常方便。不过,为此我们必须确保不会在加载 Woodlands SoundBank 之前发送 SoundBank(音频包)中包含的任何 Event(事件)。另外,还有一种方式可以实现类似的结果:从场景来加载包含与该场景有关的所有 Event 的 SoundBank。这样便于高效地管理与 SoundBank 相关的素材。因为 AwakeStart 函数是根据所在场景的初始化来调用的,所以我们可以使用这些 Trigger On 选项来确保按照正确的顺序加载素材。

而且,这样做还有一个好处:在 Unity 中卸载场景时,将会停止其所包含的所有 Event。因此,通过只在对应场景中包含 Woodlands(林地)专有内容,可确保随着区域 SoundBank(音频包)的加载和卸载来开始和停止所有与该 SoundBank 相关的 Event。另外,还可自由地将 Unity 游戏对象(如敌人和风车)添加到场景中,以便更加高效地管理游戏的内存和 CPU 用量。有关如何添加多个 Unity 场景的详细信息,请参阅 Unity 文档

接下来,我们将创建新的 Woodlands 场景,并为其添加 AkBank 组件,然后加载该场景。

  1. 在 Project 视图中,选中 Scenes 文件夹,接着在右侧窗格中右键单击空白区域,然后转到 Create 并选择 Scene

    在选择 Scene 后,将高亮显示新添加的 Scene 文件的名称以便重命名。

  2. 将其命名为 Woodlands

    通常,我们可以直接在 Project 窗口中双击并打开场景。不过,因为 L3_1 - Loading SoundBanks using Triggers 和 Woodlands 场景都要加载,所以我们需要将其拖到 Hierarchy 中以便同时打开两个场景。

  3. Woodlands 场景拖到 Hierarchy 中。

    在创建空白场景时,会在其中包含一些默认的游戏对象,如镜头和灯光。因为 L3_1 - Loading SoundBanks using Triggers 场景是主场景,所以我们会使用它的 Main Camera 和 Directional Light。为此,我们将从 Woodlands 场景中移除这些对象。

  4. 选中 Woodlands 场景中的所有游戏对象,然后右键单击并选择 Delete

    接下来,我们创建一个新的游戏对象,并将其用于加载 SoundBank。

  5. 右键单击 Woodlands 场景的标题,然后转到 GameObject 并选择 Create Empty

  6. 将其命名为 Wwise

    在 L3_1 - Loading SoundBanks using Triggers 场景中,我们会看到前面“利用 Trigger 加载 SoundBank”中创建的 Woodlands Trigger 游戏对象。在此,我们要找到它的 AkBank 组件,并将其用在 Woodlands 场景中。

  7. 在 L3_1 - Loading SoundBanks using Triggers 场景中,选中 Woodlands Trigger 游戏对象。

    在 Inspector 中,我们会看到用来加载 Woodlands SoundBank 的 AkBank 组件。

  8. 单击并按住 AkBank 标题栏,然后将其拖到 Woodlands 场景中的 Wwise 游戏对象上。

    此时会从 Woodlands Trigger 游戏对象中移除 AkBank(包括属性设置),并将其添加到 Wwise 游戏对象。

  9. 在 Woodlands 场景中,选中 Wwise 游戏对象。

    我们注意到,现在将 AkBank 组件添加到了 Wwise 游戏对象。

    接下来,我们要修改 Load On 属性。在进入 Woodlands Trigger 时,将会加载整个 Woodlands 场景。因此,不是在 AkTriggerEnter 时加载 SoundBank,而是在 Woodlands 场景 Awake 时加载。

  10. Load On 属性中,仅选中 Awake 一项。

    在从运行时移除场景时,应同时卸载 SoundBank。为此,我们来将 Unload On 属性设为 Destroy(场景的卸载和移除时机)。

  11. Unload On 属性中,仅选中 Destroy 一项。

    我们不需要在 Woodlands 场景中执行任何其他修改,所以可以移除该场景,以便直接通过 L3_1 - Loading SoundBanks using Triggers 场景来加载。首先,我们来保存场景。

  12. 右键单击 Woodlands 场景,然后选择 Save Scene

    在保存场景后,Woodlands 名称旁边的星号将会消失。接下来,我们还要从 Hierarchy 中移除场景,以便直接通过 LoadSceneAsyncOnEnter 脚本来加载。假如不将其移除,将会重复加载此场景。

  13. 再次右键单击,然后选择 Remove Scene

    Hierarchy 中不再显示 Woodlands 场景,但仍可在 Project 视图中找到。接下来,我们将使用 LoadSceneAsyncOnEnter 脚本来动态加载场景。如此一来,在 Player 进入 Woodlands Trigger 时,场景便会重新出现在 Hierarchy 中,同时会加载 Woodlands SoundBank。LoadSceneAsyncOnEnter 脚本为自定义脚本,用于在加载场景前检测 AkAudioListener (Main Camera) 是否进入了 Trigger。

  14. 选中 Woodlands Trigger 游戏对象。

  15. 在 Inspector 中,单击 Add Component,然后搜索并选中 LoadSceneAsyncOnEnter

    我们注意到,LoadSceneAsyncOnEnter 底部显示了一条警告消息:WARNING: No Scene name!。

    脚本会自动搜索 Build Settings 中添加的场景,并查找与此字段中文本匹配的场景。因为现在字符串是空的,所以才会显示警告消息。

    [备注]

    Build Settings 设置用于构建游戏的编译版本。一旦进入 Play 模式,游戏便会通过该设置查找要加载的其他场景。只有位于 Unity 工程中的场景才能被添加到 Build Settings 中。

  16. Scene to Load 属性中,键入 Woodlands

    此时,将会显示一条新的警告消息。为了在运行时加载 Hierarchy 中没有的场景,我们需要将其添加到 Build Settings。这样 Play 模式才能获知这些场景。

  17. 在 Unity 菜单栏中,转到 File,然后选择 Build Settings

  18. Woodlands 场景从 Project 视图拖到 Scenes in Build 列表中。

    在将场景添加到列表中时,只要不放在最上面就行。因为,在构建游戏的编译版本时要将最上面的场景用作 Main 场景。确保不再显示警告消息,否则请检查拼写错误。现在,我们对 Woodlands Trigger 进行了修改并加载了场景。

  19. 关闭 Build Settings 窗口,然后单击 Play 按钮。

  20. 跑到 Woodlands。

    我们注意到,现在 Hierarchy 中加载了 Woodlands 场景。

  21. 跑出 Woodlands Trigger,然后进入 Village(村庄)。

    我们注意到,Hierarchy 中卸载了 Woodlands 场景。接下来,我们可以将对象添加到 Woodlands 场景,以便在进入 Trigger 时加载 SoundBank 声音以及树木、瀑布等各种游戏对象。

  22. 按下 ESC 打开《WAG》游戏菜单,然后再次单击 Play 按钮退出 Play 模式。


此页面对您是否有帮助?