目录

Wwise Demo Game

包含 Wwise Unity 集成的一个演示场景,可以从 Wwise Launcher 的 UNITY 页面下载,具体是在 "Recent Unity Projects" 标题下的上下文菜单下面。这个简单的场景是全部使用 Unity 的标准素材创建的,它演示了如何使用集成的一些基本功能。

安装

Wwise Demo Game 是一个独立的工程。它可以在 Wwise Launcher 中下载。您的游戏不能用它作为基础。为此,使用 Wwise Launcher 将 Wwise 集成到一个新的 Unity 工程中。

Note.gif
备注:
  • 文件包中包含生成的 SoundBank。
  • 您可以在 <DEMO_SCENE_ROOT>/WwiseProject 下找到与场景关联的 Wwise Project。不建议将这个 Wwise 工程放在游戏的 Assets 文件夹中,但在这个演示中,为了打包目的,这样做是必要的。

部署

Wwise Demo Game 的目的在于展示如何在 Unity Editor 中使用 Wwise Unity Integration。

若要将其中一个 Wwise Demo Game 场景部署到游戏主机或移动设备,请执行以下步骤:

  1. 在 Launcher 的 Unity 选项卡中,在 Wwise Demo Game Unity Project 下选择 Modify Wwise in Project... 选项。
    1. Launcher 的 Unity 集成页面打开了。
  2. 添加所需的 Deployment Platforms 并单击 Modify
  3. 在 Unity 中打开工程的最新版本。
  4. 为平台生成 SoundBank。
  5. 将 Generated SoundBanks 文件夹复制到 StreamingAssets/Audio 文件夹。
  6. 在 Unity 中,为您想要的平台构建场景然后部署到设备上。

演示场景

这个 First-Person 3D 地图包含一些沿着一条道路的"站点"。对于每一站点,旁边的指示牌上都显示有简短说明。为了便于引用,各个站点的素材都嵌套在场景层级结构中。

脚步演示

步道和第一站演示了如何使用脚本和触发器来创建脚步系统。

在 Wwise 工程中,已经按照推荐的方式实现了脚步:每个表面类型的 Random container,嵌套在一个 Switch Container 下。可以使用 Footstep 事件来发送一个脚步,而表面材料则是用 Footstep_material 切换开关组来控制的。

场景的地形被描绘成四种不同的材质:草、砂石、木头和泥土。在不同的表面上行走会相应地改变脚步的声音。

为了实现这一目标,各个区域都放置了 Box Collider。然后,只需简单地将一个 Switch Value 从 Wwise Picker Window 拖动到一个 Box Collider 上,就设置好了 Footstep_Material 切换开关。为了在 First Person Controller 进入碰撞体时在其上设置切换开关,我们需要在 "AkTriggerEnter" 触发器上触发 Ak Switch 脚本,并确保启用了 "Use Other Object" 复选框(如 Inspector Window 中所示)。

一个非常基本的脚步脚本就实现好了,当玩家走动时,它会每隔 0.3 秒发布一个Footstep 事件。这个脚本已经附加到 First Person Controller 了。以上过程展示了一种通过脚本将事件发布到 Wwise SoundEngine 的方法。

字幕演示

接下来将用这个站点演示如何在 Unity 中创建自定义事件触发器,以及使用事件回调。

一个简单的按钮脚本包含一个指令,当玩家离按钮足够近的时候按下键盘或控制器上的键,该指令就会运行。另一个脚本,AkTriggerButtonPress,会在该指令上注册,然后从它的父类 AkTriggerBase 调用 triggerDelegate。从 AkTriggerBase 继承,可以使自定义触发器在 Wwise Component Inspector 窗口中显示在 "触发器” 列表上(例如,附加在按钮上的 Ak Ambient)。有关自定义触发器的更多信息,请参见 为 Wwise Events 添加新的 Trigger

事件开始播放一个包含 WAV marker 的声音文件。注册与事件关联的 marker 回调,可以使得字幕在面板上更新显示。为了实现这一点,在 Ak Ambient 的 inspector 中,勾选了 "Use Callback" 选项。然后,该 GameObject (SubtitleSign)包含一个脚本(SubtitleDemo.cs),整个被拖放到了 "Game Object" 框中。当回调被触发时会执行 Callback Function(MarkerCallback),它的名称是手动输入的,且 Callback Flag 选为 "Marker"。查看 SubtitleDemo 的代码,可以看到 Callback 函数的实现很简单,就是使用 MarkerCallbackuIdentifier 字段作为索引,从预定义的字符串数组中读取字幕。参见 如何与 inspector 一起使用 AkAmbient 以获取更多关于回调的信息。

环境演示

该站点演示了如何对场景的一个区域内所有声音施加效果器。两个洞穴包含一个 EnvironmentZone(同样是用 Box Collider 作为触发器),在这个环境上添加了一条 AuxBus(从 Wwise Picker 窗口中拖放)。

在 Wwise 中,已经创建了两条 Auxiliary Bus,分别包含不同的效果。此外,脚步和 Little Sequence 都选中了 "Use game-defined Auxiliary sends"。

当一个 Wwise 事件从 EnvironmentZone 中发出时,它的声音会连通到该区域关联的 AuxBus。

本站点还演示了 Environment Portal 组件。它可以实现在两个环境之间进行空间过渡。本演示中的三个按钮用于说明 Environment Portal 如何影响 Auxiliary Bus 的混合。

要创建一个环境门户,首先创建一个 Box Collider,它在它的一个轴上连接两个 Ak Environment(在这个演示中,门户会接触到 "z" 轴上的红色区域和蓝色区域)。然后添加 Ak Environment Portal 组件,并选择正确的轴。这两个环境将被混合,并被自动填充。

想了解有关 Environments 和 Environment Portal 的更多信息,请参阅 如何通过 inspector来使用 AkEvironment 和 AkEvironmentPortal(混响区域)

Timeline Demo

此站点演示了如何在 Unity 中的 Timeline 内使用 AkEventTrack 和 AkRTPCTrack。在按下按钮后,会有两个 Cube 相向移动直到相撞。

若要查看 Timeline,请依次选择 Window > Timeline。接着,在 Hierarchy 中依次展开 TimelineDemo 和 Timeline Demo Button 对象。然后,选择 Button 对象。此时,Timeline 编辑器将显示相应的 Timeline,用于控制这两个 Cube 的动画和 Wwise Event。该 Timeline 由 Button 对象的 Playable Director 组件控制。

Timeline 中包含两个 Animation Track,每个 Cube 对应一个。这两个 Track 用于模拟 Cube 的 z 轴位置随时间的变化。另外,Timeline 还包含 AkEventTrack 和 AkRTPCTrack,两者分别显示有白色和红色旗标。AkEventTrack 包含两个 AkEventPlayable Clip:第一个用于触发 PlayCubeMovement Wwise Event,第二个用于触发 PlayImpact Wwise Event。这些 Wwise Event 的名称会显示在 Clip 中。为了正确显示名称,可能需要增大 Timeline 编辑器视图的大小,并放大显示窗口内容。PlayCubeMovement Wwise Event 会播放正弦波音频源,其音高受 RTPC 影响。此 RTPC 的名称为 CubeAcceleration。在两个 Cube 相向移动时,AkRTPCTrack 会逐渐增大此 RTPC。此时,正弦波的音高会逐渐升高,这个简单的声音效果用来表现两个 Cube 的加速移动。

另外,此站点还演示了 Motion 功能。注意,在玩家层级结构中有一个名为 Motion listener 游戏对象。此游戏对象用于设置所支持平台上 Motion 设备的输出。所有输出都需要一组听者来接收数据。因此,Motion listener 同时具有 Ak Game Object 和 Ak Audio Listener。若要在 Cube 相撞时生成 Motion 效果,必须完成下述两项操作。第一,需要在 Wwise 工程中使用 Wwise Motion ShareSet 将撞击声发送到输出总线。第二,需要将 Motion 输出的听者添加到发送撞击事件发声体的听者。如需了解如何添加输出,请查看 AkMotionListener 脚本。

Note.gif
备注: 为了在 Android 上支持 Motion 功能,应用程序清单必须包含振动权限。Unity 会根据应用程序的内容自动生成清单。通过添加 Handheld.Vibrate() 调用,可在清单中添加所需权限。

有关 Timeline Integration 的详细信息,请参阅 Wwise Timeline Integration

Spatial Audio 场景

此场景是 Spatial Audio 教程的最终成果。

Generated at Wed Jun 12 13:57:31 2019 for Wwise Unity Integration by  doxygen 1.6.3