第 2 课

目录

利用 AkAmbient 发送事件

在 Village(村庄)的小山丘上,你会看到有个风车在慢慢转动。这个风车看起来好像跟 Allegro 王国中的各种其他素材没什么两样,但其实它还有一个另外的作用:以其特有的机械声音预示人类文明所在,从而引导玩家顺利找到 Village。接下来,我们要通过 AkAmbient 脚本来针对 Windmill(风车)游戏对象发送 Windmill Event(事件)。

  1. 在 Unity 菜单栏中,依次选择 Audiokinetic > Certification > 301 > Lesson 2 > Posting an Ambience

    我们注意到,Hierarchy 中将会显示两个场景:Village Environment Scene 和 L2_1 - Posting an Ambience。L2_1 - Posting an Ambience 是 Main 场景的副本,用作《Wwise Adventure Game》中的基本场景,便于加载所有其他区域场景。Village Environment Scene 是一个包含所有只存在于 Village 的游戏对象的区域场景。该场景一般会由系统自动加载和卸载,通常只有在进入 Play 模式时才会显示在 Hierarchy 中。不过,因为要对此场景内的 Windmill 游戏对象进行修改,所以我们将其与 L2_1 - Posting an Ambience Scene 一并加载到了 Unity 中。

    [技巧]

    如需进一步了解如何在 Unity 中管理多个场景,请访问 https://docs.unity3d.com/Manual/MultiSceneEditing.html 页面。

    首先,我们要找到 Windmill 游戏对象,并向其添加 AkAmbient 脚本。

  2. 在 Hierarchy 中,选中 L2_1B - Village Environment Scene,然后展开 Wwise 并选中 Windmill 游戏对象。

    接下来,我们还要调节 Scene 视图以便仔细查看 Windmill 游戏对象。

  3. 在 Hierarchy 中选中 Windmill 游戏对象的情况下,将鼠标移到 Scene 视图中,然后单击 F

    接下来,我们需要添加 AkAmbient 脚本。

  4. 在 Inspector 中,添加 AkAmbient 脚本。

    [备注]

    若不知如何添加脚本,请参阅“第 1 课”。

    我们来看下 AkAmbient 组件,察看都包含哪些属性。

    在添加的 AkAmbient 组件中,我们会看到 Trigger On、Action on Event、Use CallbackEvent Name 属性。这些跟 AkEvent 组件完全相同。除此之外,AkAmbient 还增添了 Position TypeShow Attenuation Sphere 属性字段。Event Name 中目前还没有选择任何 Event。接下来,我们添加 Ambient_Windmill Event。

  5. Event Name: 中,依次展开 Events > Ambient > SoundBankSpecific,然后双击 Ambient_Windmill Event。

    我们注意到,Trigger On 选项设成了 Start。因为游戏一加载就会启动 Windmill,所以我们选择保留此选项。接下来,我们在 Play 模式下验证一下集成效果。

  6. 单击 Play 按钮,然后跑向 Village。

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

    在逐渐靠近风车时,音量会越来越大。不过,您有没有注意到在 Training Area(训练场)的时候并没有播放风车声,但是一走近就会慢慢听到声音?在 Training Area 应该可以听到 Windmill 声音才对,也好预示附近有人类文明存在。但是,如何判断到底是音量太小还是超出了 Max Attenuation Range(最大衰减范围)呢?为此,我们一般会通过 Game Object 3D Viewer 来检查声音的距离。不过,因为已经添加了 AkAmbient 组件,所以也可利用 Show Attenuation Sphere 属性直接在 Unity 的 Scene 视图中迅速显示并判断 Max Attenuation。