menu
 

如何在 Unreal Engine 中播放来自 Wwise 的声音

Wwise 技巧和工具

Wwise 有很多功能;不过在开发初期,如果不是很清楚如何使用,其可能无法按照预期运行。我不想各位因为最初的小插曲而觉得 Wwise 太难用,所以请允许我在此详细地讲解一下。只要按照这里描述的步骤操作,就不会出错。

在这篇博文中,我将介绍如何通过 Unreal Engine 来播放声音。

为了验证所述操作是否可行,我使用了以下软件版本:

  • Wwise 2023.1.1.8417
  • Unreal Engine 5.3.2

注意,如果使用其他版本,行为可能有所不同。

目录

创建工程
创建 Unreal 工程
    集成 Unreal Integration
    Wwise 初始设置
    Unreal 初始设置
在 Wwise 工程中注册声音
创建 UAsset
通过 Blueprint 播放声音
最后总结
附录 – 示例文件夹配置
    将所有内容放在 Unreal 工程内
    将 Wwise 工程放在 Unreal 工程外
附录 – 如何创建 UAsset
附录 – 快速播放声音
    利用 AkAmbientSound 播放声音
    利用 Blueprint 播放声音
    利用 C++ 播放声音

创建工程

创建 Unreal 工程

1. 打开 Unreal Engine 并依次选择 GAMES > Third Person。
2. 在 Project Name 字段中指定工程名称。
• 在本例中,我将工程命名为了 ThirdPerson_Tutorial。
3. 单击 Create 按钮创建新的工程。
4. 在创建工程后,会打开 Unreal Editor 视图。不过在这里,我们先来将其关闭。

01_Unreal_Create_Project

集成 Unreal Integration

1. 打开 Audiokinetic Launcher,然后选中 Unreal Engine 选项卡。
2. 点击与刚才创建的 ThirdPerson_Tutorial 工程对应的 Integrate Wwise in Project... 按钮。

02_Integrate_Wwise

3. 确认所要集成的平台。
4. 若不指定 Wwise 工程路径,将在 Unreal 工程下自动创建 Wwise 工程。
• 若之前已在某个地方创建 Wwise 工程,请在此处指定路径以使用该工程。
5. 点击 Integrate 按钮。

03_Integrate_Wwise_Menu

6. 这样就完成集成了。
7. 接下来,要更新 Wwise 工程,请依次单击 Open in Wwise > Wwise 2023.1.1.8417。

04_Open_in_Wwise

Wwise 初始设置

1. 依次转到 Project > Project Settings > SoundBanks,然后选中 Enable Auto-Defined SoundBanks。
2. 保存 Wwise 工程,然后重新打开 Unreal Engine。

05_Wwise_Initial_Settings

Unreal 初始设置

1. 依次选择 Edit > Project Settings...。
2. 依次转到 Wwise > User Settings > WAAPI,然后启用 Auto Connect to WAAPI。

06_Unreal_Initial_Settings_1

3. 依次转到 Wwise > Integration Settings > Installation > Root Output Path,然后指定 Wwise 工程的 GeneratedSoundBanks 文件夹。
• 若将此字段留空,则将引用 Content 文件夹。这样会无法正确播放声音。

07_Unreal_Initial_Settings_2

4. 在打开 Unreal Engine 时,Wwise 设计工具会显示 External Project Changes 警告对话框。在此,请单击 Reload 按钮。

08_Unreal_Initial_Settings_3

5. Wwise Browser 中会显示警告消息,表明未找到 SoundBank 元数据。不过不用担心,直接单击 Generate SoundBanks... 按钮即可。

09_Unreal_Initial_Settings_4

6. 在 Generate SoundBanks 对话框中,单击 Generate 按钮以生成 SoundBank。这时会在 Wwise Browser 中显示目录配置。

10_Unreal_Initial_Settings_5

在 Wwise 工程中注册声音

接下来,我们试着播放环境声。
在此,我们选用 IntegrationDemo 文件夹中的声音:
•<Wwise>\SDK\samples\IntegrationDemo\WwiseProject\Originals\SFX

1. 将 waves.wav 文件从此文件夹拖放到 Actor-Mixer Hierarchy 下的 Default Work Unit。这时会打开 Audio File Importer 对话框。

11_Register_Assets_1

2. 单击 Import 按钮。这时会将其注册为名为 waves 的 Sound SFX。

12_Register_Assets_2

3. 在 Project Explorer 中,选中刚才注册的 "waves" Sound SFX 以在右侧显示该对象的相关信息。

13_Register_Assets_3

4. 在 General Settings 选项卡中,有个 Loop 设置。请选中与之对应的复选框。

14_Register_Assets_4

5. 右键单击 "waves" Sound SFX,并通过菜单创建以下 Event:
•Play_waves:播放 "waves" Sound SFX
•Stop_waves:停止播放 "waves" Sound SFX

15_Register_Assets_5

6. 在完成以上步骤后,保存 Wwise 工程并重新打开 Unreal Engine。

创建 UAsset

要播放声音,需创建 Unreal Engine 素材 (UAsset)。
有多种方式可以创建 UAsset。在此,我来展示一下如何使用 Reconcile 来做到这一点。

1. 首先,创建 SoundBank 来将之前添加的 Event 包含在内。

16_Create_UAssets_1

2. 然后,在 Wwise Browser 中单击 Reconcile 按钮。

17_Create_UAssets_2

3. 接着,确认将 UAsset Operation 设为 Create,然后单击 Reconcile Unreal Assets 按钮。

18_Create_UAssets_3

4. 这时便会创建 UAsset。在 Wwise Browser 中,选中 Wwise UAssets Status 列。

19_Create_UAssets_4

通过 Blueprint 播放声音

在本文中,我将向各位展示如何通过 Blueprint 来播放声音。

1. 在菜单中选择 Open Level Blueprint。

20_Play_by_BluePrint_1

2. 右键单击 Blueprint 视图来创建 BeginPlay Event。

21_Play_by_BluePrint_2

3. 从 BeginPlay Event 拖动连线来创建 PostEvent 节点。

22_Play_by_BluePrint_3

4. 在 Ak Event 中,设置 Play_waves。

23_Play_by_BluePrint_4

5. 编译。

24_Play_by_BluePrint_5

6. 不做任何其他更改,直接单击 Play 按钮。

25_Play_by_BluePrint_6

7. 现在应当可以听到波形的声音了!

26_Play_by_BluePrint_7

最后总结

为了确保相关操作切实可行,我按照本文中的步骤亲自做了验证。不过,有些步骤或截图可能会随着未来版本的升级而改变,所以如果各位发现跟我在这里的描述不同的行为,请在评论区告诉我。
若想了解其他功能,也请在评论区留言。

附录 – 示例文件夹配置

将所有内容放在 Unreal 工程内

您可以包含 Wwise 工程中的 Generated SoundBanks 文件夹,并将整个 Wwise 工程放在 Unreal 工程内。

27_Wwise_in_Unreal

  • 优点:所有内容都在同一文件夹/存储库中。
• 缺点:非声音设计师也要下载 Wwise 工程(尽管其并不需要 Wwise 设计工具)。

将 Wwise 工程放在 Unreal 工程外

您可以将 Generated SoundBanks 文件夹放在 Unreal 工程内,而将 Wwise 工程放在 Unreal 工程外。

28_Wwise_outside_Unreal

  • 优点:非声音设计师无需下载 Wwise 工程。
• 缺点:内容会被放到多个文件夹/存储库中。
*提示:为了能在 Unreal Editor 上运行,至少要配置 Generated SoundBanks 和 Windows 文件夹下的文件。

附录 – 如何创建 UAsset

A) 在 Wwise Browser 中,将 Event 拖放到 Content Browser。

29_Create_UAssets_1

B) 右键单击 Event 并从菜单中 Import Selected Assets。
• 您可以指定多个 Event 或文件夹。

30_Create_UAssets_2

C) 另外还可通过将 Event 从 Wwise Browser 拖放到 Actor 属性或目标 Blueprint 组件来创建 UAsset。

31_Create_UAssets_3

32_Create_UAssets_4

D) 仅对于 Event 可通过从 Wwise Browser 拖放到视口来同时生成 UAsset 和 AkComponent。

33_Create_UAssets_5

在执行步骤 CD 时,会在 Edit > Project Setting > Wwise > Integration Settings > Asset Creation > Default Asset Creation Path 中的给定位置生成 UAsset。

34_Create_UAssets_6

附录 – 快速播放声音

利用 AkAmbientSound 播放声音

1. 放置 "AkAmbientSound" Actor。

35_Play_by_AkAmbientSound_1

2. 设置要在 AkEvent 上播放的 Event。

36_Play_by_AkAmbientSound_2

3. 启用 Auto Post。

37_Play_by_AkAmbientSound_3

4. 转到 Obstruction Occlusion 并将 Refresh Interval 设为 0.0。

38_Play_by_AkAmbientSound_4

利用 Blueprint 播放声音

1. 选择 Open Level Blueprint。

39_Play_by_BluePrint_1

2. 创建 BeginPlay Event。

40_Play_by_BluePrint_2

3. 从 BeginPlay 创建 Post Event 节点。

41_Play_by_BluePrint_3

4. 设置要在 Post Event 的 AkEvent 上播放的 Event。

42_Play_by_BluePrint_4

利用 C++ 播放声音

您可以采用 AkAudioEvent.h 中定义的 UAkAudioEvent 方法来发送 Event。

1. 您可以将 Event 发送到给定的 Actor/Component/GameObject。

  • AkPlayingID UakAudioEvent::PostOnActor()
  • AkPlayingID UakAudioEvent::PostOnActorAndWait()
  • AkPlayingID UakAudioEvent::PostOnComponent()
  • AkPlayingID UakAudioEvent::PostOnComponentAndWait()
  • AkPlayingID UakAudioEvent::PostOnGameObject()
  • AkPlayingID UakAudioEvent::PostOnGameObjectAndWait()
  • AkPlayingID UakAudioEvent::PostOnGameObjectID()

2. 您可以使用空的 GameObject。

  • AkPlayingID UakAudioEvent::PostAtLocation ()
  • AkPlayingID UakAudioEvent::PostAmbient()

3. APIs that manage data loading:

  • void UakAudioEvent::LoadData()
  • void UakAudioEvent::UnloadData()
  • bool UakAudioEvent::IsDataFullyLoaded()
  • bool UakAudioEvent::IsLoaded()

合田浩(Hiroshi Goda)

合田浩(Hiroshi Goda)

合田浩 (Hiroshi Goda) 目前在 Audiokinetic K.K. (Japan) 担任高级现场应用工程师兼技术专员,负责为已在使用或考虑使用 Wwise 的客户提供技术支持。自 1997 年,他开始担任 PlayStation 的游戏程序员直到 PlayStation3,之后一直从事手游开发工作。合田于 2016 年转入网络安全行业,并于 2021 年重返游戏行业,自此开始担任现职。他拥有图像减色工具开发和 PS1 视频标准制定经验,并注册了使用 3 值 α 电影进行分层绘图的专利。事实上,他的工作更多侧重画面而非音频。

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

小型游戏项目使用Wwise的五大好处

假如您是游戏音频领域的从业人员,并且之前参与制作过小型游戏项目,八成听人说过下面这样的话: “就我们的需求来说,有必要使用像 Wwise...

19.12.2019 - 作者:亚历克斯·梅 (Alex May)

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 - Part 2

请阅读本文第一部分。

3.2.2020 - 作者:伍岚珊

对白 | 基于Wwise与Unreal Engine的语音设计

22.12.2021 - 作者:杰克•盖米林 (Jake Gamelin)

Wwise 2022.1 新增功能

Wwise 2022.1 现已推出并可通过 Audiokinetic Launcher 下载。下面来简要介绍一下该版本中都有哪些新增功能。...

16.11.2022 - 作者:Audiokinetic (音频动能)

关于对 Wwise Unreal Integration 的改进

作为在 Unreal 中管理 Wwise 素材的便捷解决方案,Wwise 2019.2.1 中引入的 Event-Based Packaging (EBP) 素材管理工作流程受到了 Wwise...

7.2.2023 - 作者:纪尧姆·雷诺 (GUILLAUME RENAUD)

Wwise Spatial Audio 2023.1 新增功能 | Reverb Zone

Reverb Zone 简介 在 Wwise 23.1 中,我们为 Wwise Spatial Audio 增添了一个名为 Reverb Zone 的工具。Reverb Zone 本质上来说是...

10.1.2024 - 作者:托马斯•汉森 (Thomas Hansen)

更多文章

小型游戏项目使用Wwise的五大好处

假如您是游戏音频领域的从业人员,并且之前参与制作过小型游戏项目,八成听人说过下面这样的话: “就我们的需求来说,有必要使用像 Wwise...

“零代码”开发小游戏—UE4蓝图与Wwise结合的设计思路 - Part 2

请阅读本文第一部分。

对白 | 基于Wwise与Unreal Engine的语音设计