第 7 课

目录

使用多个 SoundBank

许多电子游戏是用关卡来组织内容的,而且许多声音只有在特定的关卡中才会用到,比如烟火声只有在玩家角色庆祝游戏通关的时候才会听到。如果玩家还没有到达游戏中的那一步,就没有必要将对应的声音载入内存了。

在这个版本的《Cube》中,有一个 Actor-Mixer 对象叫作 Map Voices,它装有一些语音对象,这些语音只会在一个叫 dcp_the_core 的关卡中听到。

  1. 展开 Map Voices 这个 Actor-Mixer 并试听它里面装着的任何 Sound SFX(Sound Effects,音效)对象。

    因为 Map Voices 这个 Actor-Mixer 中的所有对象都只会在游戏中一个特定的关卡里才会用到,所以这给了你机会来更好地管理内存,方法是把这些声音放到一个专门的 SoundBank 中去,这个 SoundBank 只会在到达 dcp_the_core 这个关卡的时候加载。

  2. 在 Project Explorer 中,选中 SoundBanks 选项卡。

    跟之前的课程中用到的工程不一样,这个工程中现在一个 SoundBank 都没有。所有游戏都至少要有一个 SoundBank,因为 SoundBank 装有音频素材以及关于音频内容如何播放的所有指令。之前的所有工程都只用了一个 SoundBank;不过,在这个工程中,我们要使用两个;一个用来存放整个游戏中都会用到的声音,另一个专门存放 dcp_the_core 关卡中所要使用的声音。

  3. 右键单击 Default Work Unit(默认工作单元),然后依次选择 New Child > SoundBank(新建子对象 > 音频包)。

  4. 给这个 SoundBank 起名叫 Main

    [备注]

    游戏程序员必须编写游戏引擎相关代码来按照名称加载 SoundBank,所以一定要正确命名 SoundBank。

  5. 在同一个 Default Work Unit 中,创建另一个 SoundBank,起名叫 DCP_the_core

    现在你就要来指定哪些声音放到哪些 SoundBank 中来加载了。

  6. 在 Wwise 菜单栏中,依次选择 Layouts > SoundBank(布局 > 音频包)或按下 F7

  7. 在 SoundBank Manager(SoundBank管理器)中,展开 Default Work Unit

    你会看到刚刚创建的两个 SoundBank。

    每个 SoundBank 的列表项中有几列关于数据大小的信息。目前两个 SoundBank 的值都为 0, 因为 SoundBank 中什么都还没有装呢。界面上还有一个 Max Size(最大体积)列,你可以在这里指定一个以字节为单位的值来表示这个 SoundBank 将占用的内存预算。预算经常是在游戏开发流程的早期就指定好了,但在开发过程中可能会有变。所以,有必要了解预算要求并严格遵守。因为如果将内存资源用在了音频上,其他方面(如图形)就没法再用了。

    设定一个 Max Size 预算并不会从技术上卡住你只能用到那个值为止,但当预算超支的时候它一定会给你一个醒目的警告。

  8. 将 "Main" 和 "DCP_the_core" SoundBank(音频包)的 Max Size(最大大小)值分别设为 9,500,0006,000,000

    现在你就需要把对象指派到 SoundBank 中去了。你可能还记得在早先的课程中指派对象是通过把事件或者对象拖拽到 SoundBank 里来做到的,这样就可以确保必需的音频素材能自动成为 SoundBank 的一部分。

    现在你需要找到有哪些事件是只会在 dcp_the_core 这个关卡中触发的。好在我们已经为特定关卡的 Event 添加了对应的前缀,来明确指示其具体要用于哪个关卡。

  9. 选中所有带有 DCP 这个前缀的事件,并把它们拖入 DCP_the_core 这个 SoundBank 中去。

    [备注]

    在之前课程所用的工程中,我们将 "DCP_Music" Event 放在了 "Main" SoundBank 内。这样可确保在所有游戏关卡中都能听到相应的音乐。然而,在本课中,你要把 DCP_Music 这个事件放到 DCP_the_core 这个 SoundBank 中去,对应的关卡出现在游戏尾声,于是这个 SoundBank 只会在需要加载这个特定的关卡时才会加载。也就是说你在玩游戏中的其它关卡时不会听到音乐,只会在本课后来用到这个关卡的时候听到。

    DCP_the_core 的数据体积还没有变大。这是因为还没有生成 SoundBank,你会在装好 Main 这个 SoundBank 之后做这件事情。

  10. 将剩下的所有事件都拖到 Main 这个 SoundBank 中去。

    [技巧]

    在 Event Viewer 中,选中 Defeated_Bauul,接着滚动到列表的最下面,然后在按住 Shift 的同时单击最后一个 Event(即 WeapLoad),以便快速选中下一步所要使用的所有 Event。

    你现在需要指定要生成哪些 SoundBank。

  11. 勾选 MainDCP_the_core 这几个 SoundBank 的复选框,以及Windows(或者Mac,如果你用的是苹果电脑)平台和 English 语言对应的复选框。

  12. 单击 Generate Selected(生成选中项)。

    这时将打开 Generating SoundBanks 窗口。刚才,将播放 Event 所需的各种音频素材添加到了 SoundBank 中。现在,系统会自动检测并转码,同时显示各项操作进度。

  13. 关掉 Generating SoundBanks 窗口。

  14. 在 Wwise 工具栏中,确保将 Platform Selector(平台选择器)设为与刚才生成的 SoundBank 相同的平台(Mac 或 Windows)。

    在 SoundBank Manager 中可以看到,两个 SoundBank 的数据大小均超出了预算,Free Space(可用空间)列显示了红色的负值。这表明为了符合预算的要求,你还需要为每个 SoundBank 相应减少多少字节的数据。


此页面对您是否有帮助?