版本
menu_open
Wwise Unity Integration Documentation
用 Wwise 和 Unity 制作 DLC

使用 Wwise 文件包(File Package)

使用 Wwise 支持 DLC 的默认方法是使用文件包。 Authoring 文档中对该方法有部分解释:Wwise Help > 完善工程 > 管理 File Package > 可下载内容(DLC)概述。简单来说,这些包可以包含替换的 BNK 和 WEM 或者附加文件,它们可以随意加载和卸载来启用或禁用 DLC。这个包的格式是可选的,但是它现在内置在 Wwise / Unity 插件中。如果您想编写自己的包格式,则需要编写新的 Low-Level IO 来替换默认的。

要在 Unity 中使用包,您只需将它们放置在 Base Path 中,即您 bank 的所在路径,该路径是在 AkInitializer 的属性中定义的。然后调用 AkSoundEngine.LoadFilePackage()。Wwise 将始终尝试先通过文件包加载文件,加载的顺序是以相反的顺序(最后添加的是第一个搜索到的)。

该方法将适用于在游戏发布之后,所有支持向磁盘写入 Base Path 的平台。遗憾的是,iOS 和 Android 不满足这个条件。

在 Android 和 iOS 上,由于所有数据都被打包到一个只读文件系统,所以需要将您的文件包放在另一个不同的目录中。这是通过在 AkSoundEngine.LoadFilePackage() 之前调用 AkSoundEngine.AddBasePath() 来完成的。您可以添加多条路径,最后添加的将首先搜索。请查看恰当的操作系统文档,以找出有哪些限制。下面的代码是一则例程,用于选择可存储您文件的路径:

#if UNITY_IPHONE
string fileNameBase = Application.dataPath.Substring(0, Application.dataPath.LastIndexOf('/'));
fileName = fileNameBase.Substring(0, fileNameBase.LastIndexOf('/')) + "/Documents/" + FILE_NAME;
#elif UNITY_ANDROID
fileName = Application.persistentDataPath + "/" + FILE_NAME ;
#else
fileName = Application.dataPath + "/" + FILE_NAME;
#endif

注意,在 Android 上还有其它一些可写的路径,比如 SD 卡或类似的存储设备。

使用 Addressables 系统

Unity Addressables 系统可用于打包和分发 SoundBank 及流播放媒体文件。 有关详细信息,请参阅 在 Unity 中使用 Wwise Addressables Package 页面。

利用 UnityWebRequest 以流媒体形式加载 SoundBank

除此之外,还可利用 Unity 中的 UnityWebRequest 类来直接获取并加载 DLC 音频文件。 这是通过在内存中加载 bank 来完成的,就像在 AkMemBankLoader.cs 中演示的那样。 对于旧版 Unity,AkMemBankLoader 还可通过 WWW 类(现已弃用)加载 SoundBank。 若要将现有 SoundBank 替换为新的 SoundBank,必须先卸载之前的 SoundBank;否则 Wwise IO 系统无法理解相应代码,导致没法确定您是错误地重新加载了同一 SoundBank 还是想要替换它。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅