menu
版本
2017.2.10.6745
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
使用 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 类来获取您的 DLC 音频文件并直接加载它们。这是通过在内存中加载 bank 来完成的,就像在 AkMemBankLoader.cs 中演示的那样。如果您要用新的 bank 取代现有的 bank,必须先正确卸载以前的 bank;Wwise IO 系统不会理解那段代码,所以它不知道您是错误地重新加载了同一个库,还是想要替换它。