版本
Wwise Unity Integration Documentation
|
This example demonstrates how to separate certain assets (such as new items or characters) into a DLC asset bundle that is packaged using Addressables.
Before you proceed with this tutorial, do the following:
An Addressables Demo Scene is available on GitHub.
To install the Addressables Demo Scene:
![]() | 警告: Do not select Add package from git URL. If you install the package that way, you cannot open the sample scenes. |
package.json
file in the WwiseUnityAddressablesDemoScene repository.我们专门为此教程在 Wwise 工程中创建了两个音效、两个 Event 和一个 SoundBank。
![]() | ![]() | ![]() |
我们使用 AkBank 和 AkEvent 组件创建了两个 GameObject Prefab:DlcAssetHighImpact 和 DlcAssetLowImpact。 这两个 Prefab 会加载 “DLC” SoundBank,并在实例化时播放对应的音效。
除此之外,我们还创建了两个场景:AddressablesDemoScene 和 AddressablesSubScene。 AddressablesDemoScene 是个简单的 Unity 场景,里面包含了一些互动按钮,方便测试 Addressables 素材的加载和卸载。 AddressablesSubScene 则是个仅包含 “DlcAssetLowImpact” Prefab 的场景。我们可使用其来对“通过 Addressables 加载包含 Wwise 对象的场景”进行测试。
![]() | 备注: | AddressablesDemoScene 还包含一个有关如何借助 Wwise Addressables Package 使用本地化语音并更改语言的示例。 |
所有这些素材以及下节所述脚本均存放在 WwiseUnityAddressablesDemoScene 数据包中。
您可以通过在对应 Inspector 中启用 Addressable 复选框来将以下三项标记为 Addressables 素材:
![]() | 注意: 若从工程中移除 Unity Addressables Package,则将从所有素材移除 Addressable 字段。在重新安装该数据包时,并不会保留该复选框的状态。 |
在 Addressables Groups 窗口内,可看到 Default Local Group 中默认替换了这些 Addressables 素材。
如需创建新的分组,可右键单击 Addressables Groups 窗口并选择 Create New Group,或从菜单中依次选择 New > Packed Assets。 为 DLC 素材创建两个新的分组:
![]() | 备注: | 在本例中,我们只为 Windows 平台创建了一个附加 SoundBank 分组。不过,一般来说每个所要部署到的平台都要创建一个。 |
![]() | 备注: |
|
在 Addressables Groups 窗口中,将 Play Mode Script 设为 Use Existing Build,并通过 Wwise Build Script 构建新的 Addressables 数据包(如 构建工程 章节所述)。
现在,打开 AddressablesDemoScene。
在此场景中,有两个按钮:
若检视 “Loading DLC Assets Demo” GameObject,会看到我们创建了一个 AssetLoader 对象,并且其包含 AddressablePrefabLoader 组件。
此组件包含 AssetReference。我们已在对应 Inspector 中将其设为 “DlcAssetHighImpact” Prefab。
在运行游戏并按下左侧按钮时,将调用 AddressablePrefabLoader 上的设定 Load 方式:从 DLC_Assets 加载,并将 “DlcAssetHighImpact” Prefab 实例化。 一旦实例化,AkBank 组件便会从 DLC_WwiseData_Windows 素材包加载 SoundBank。
若检视 “Loading DLC Scene Demo” GameObject,会看到我们创建了一个 SceneLoader 对象,并且其包含 AddressableSceneLoader 组件。
此组件使用 AssetReference 保存对 AddressablesSubScene 的引用。 在第一次按下按钮时,会调用 LoadSceneMethod,进而采用 LoadSceneAsync 方式加载场景,并将其添加到当前场景中。 在第二次按下按钮时,将卸载场景。
AddressablesSubScene 仅包含 “DlcAssetLowImpact” Prefab,其在实例化时会加载 “DLC” Soundbank 并播放对应的 Event。
在此场景中的第三个示例中,可在 English 和 French 之间切换语言,并播放本地化声音样本。 此示例使用 AkWwiseSetLocalization 脚本。在按下绿色或蓝色按钮时,会调用 AkAddressableBankManager.SetLanguageAndReloadLocalizedBanks 函数,并将语言更改为 English 或 French。
此函数执行以下操作:
接下来便可构建 AddressablesDemoScene 并测试按钮,以此确保构建好的游戏能够正常加载这些素材。
下面我们来配置 Unity 以使用内置托管服务处理 Addressables DLC 素材。这样无需重新构建玩家内容便可对“通过 Addressables 更新素材”进行测试。
首先,构建 AddressablesDemoScene,并确保其能够正常工作。 在构建窗口中,须通过 Add open scenes 按钮添加 AddressablesDemoScene,并选择将其作为所要构建的场景。
接着,我们来配置 Addressables Hosting(可从 Tools 菜单访问)。
下面来创建 Local Hosting 服务,并选中 Enable 复选框以启用该服务。
通过菜单打开 Addressables Profiles 窗口 (Profile > Manage Profiles),并新建一个名为 Editor Hosted 的配置文件。
设置 Local 和 Remote。然后,将 Path 分别设为:
然后,通过右键单击 Editor Hosted 并选择 Set Active 来激活此配置文件。
![]() | 备注: | 有关如何使用 Addressables 托管服务的详细信息,请参阅官方文档。 |
检视 DLC_WwiseData_Windows 分组素材,并确保已更新其 Build & Load Paths。
打开 Addressable Asset Settings,并启用 Build Remote Catalog。将 Build & Load Paths 设为 Local。
使用 Wwise Build Script 重新构建 Addressables 素材。注意要在 <Unity Project Path>\HostedData
下创建新的 Addressables 素材包。
接下来重新构建 AddressablesDemoScene 以测试是否能够正常处理素材。
打开 Addressables Hosting 窗口,来在运行游戏时查看传入请求。在第一次按下按钮时,窗口底部的事件日志中应会显示请求。
下面我们来使用 Addressables 更新 DlcAssetHighImpact 音效。
首先,在 Wwise 中调节 imp_axe_stone_high 声音样本的 Pitch 值来使变化更加明显。然后,重新生成 SoundBank。
然后,在 Addressables Groups 窗口中依次选择 Build >Update a previous build。在打开的选择窗口中,在 AddressableAssetsData/Windows 下选择 addressables_content_state.bin 文件。
最后,再次运行构建好的游戏(无需重新构建)。在打开时,应会在 Addressables Hosting 窗口中看到目录更新请求。
这时按下左侧按钮,应会听到按照新 Pitch 值播放的音效。
有关 Addressables 目录和预定开发周期的详细信息,请参阅官方文档。
![]() | 备注: | 此教程中提供的脚本仅可满足对“通过 Addressables 加载素材”进行测试的最低要求。 在自己的工程中加载素材时,最好选用更为稳妥的解决方案。 如需查看更多进阶示例,请转至 Unity Addressables Sample 存储库。 |