1、首先明确2个API:
AkSoundEngine.SetBasePath();
AkSoundEngine.AddBasePath();
AkSoundEngine.SetBasePath()接口,用于指定基础得bank所在路径,也就是游戏第一次上线所包含得所有初始bank得路径。该路径为Application.streamingAssetsPath:
(WIN平台下为unity工程路径下Assets/StreamingAssets;
安卓平台下为:jar:file:///data/app/com.ZZ.TestHotfix/base.apk!/assets;
ios平台下为:Application/***.app/Data/Raw)
也就是说安卓平台下的baseBank路径为:
jar:file:///data/app/com.ZZ.TestHotfix/base.apk!/assets/Audio/GeneratedSoundBanks/Android/**.bnk
AkSoundEngine.AddBasePath()接口,用于指定后续热更的bank所在得路径,该路径为Application.persistentDataPath:
(WIN平台下为:C:/Users/yourname/AppData/LocalLow/ZZ/Hotfix;
安卓平台下为:/storage/emulate/0/Android/data/com.ZZ.TestHotfix/files;
ios平台下:Application/app sandbox/Documents)
2、其次明确3个路径:
Application.streamingAssetsPath;
Application.persistentDataPath;
AkBasePathGetter.DecodedBankFullPath;
streamingAssetsPath路径特性:
- 该路径下得所有资源全部打包进apk或者ipa内,且不经过压缩,也就是说你得bank和.mem流媒体文件一共多大,那么上线得apk或ipa文件就会增加多大。也就是说所有得初始bank都是打进apk或ipa内的!
- 是一个只读(read-only)得路径,游戏运行时只能读取,不能修改。
- 有的游戏所有的资源全部使用assetbundle,会把一些初始的assetbundle放在StreamingAssets目录下,运行程序的时候在把这些assetbundle拷贝在Application.persistentDataPath目录下,后续若这些assetbundle资源有热更的需求,直接把下载的最新的assetbundle把Application.persistentDataPath目录下旧的资源覆盖掉。
persistentDataPath路径特性:
- 可读,可写,是游戏的沙盒目录,所以打包之前是没有这个目录的,直到游戏在手机上安装完成,才会有这个目录
DecodedBankFullPath:
1、位于persistentDataPath下面一层DecodedBanks目录下,是解码之后的bank所存放的路径
3、热更原理
1、将新增或更新过的同名bnk解压在persistentDataPath路径内即可。
2、Wwise会从AddBasePath()向SetBasePath()的方向查找bnk。
4、测试结果如下:
5、关于PCK文件包:
2020.12.11更新下pck相关的东西:
1、PCK只是一种把大量离散的bnk和media收拢到少量pck中统一管理的方式,优点是文件数量少,看起来不会密集恐惧??hh
2、需要注意的是,假如同一个bnk分别在某pck内外都存在一份,那么wwise会优先读取pck中得bnk。pck没了,才会读取pck文件包外得bnk
3、与不通过pck管理资源的方式相比,只不过是在加载bnk之前多了一步记载pck,wwise提供有LoadFilePackage的api接口。
4、需要注意的是,LoadFilePackage的api接口中,传入的pck文件名字需要加入“.pck”后缀
如有不足,欢迎指正。