目录

用 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 卡或类似的存储设备。

参见:

来自 Unity WWW 服务的流媒体

还可以使用 Unity 的 WWW 类来获取您的 DLC 音频文件并直接加载它们。这是通过在内存中加载 bank 来完成的,就像在 AkMemBankLoader.cs 中演示的那样。如果您要用新的 bank 取代现有的 bank,必须先正确卸载以前的 bank;Wwise IO 系统不会理解那段代码,所以它不知道您是错误地重新加载了同一个库,还是想要替换它。

Generated at Thu May 9 21:19:07 2019 for Wwise Unity Integration by  doxygen 1.6.3