引擎逻辑优化建议:AssetBundle资源预加载、缓存问题

此前研究了一下基于AsssetBundle 进行热更新的方案,首先能够肯定的时,方案是可行的。 但使用过程中也发现了一些问题,希望能够得到引擎组的解答和支持。

1. API 补充:

希望AssetManager 增加 获取所有Bundle 名称列表的接口:cc.assetManager.getAllBundles();
**用途:**遍历游戏所有Bundle列表,以便进行预下载Bundle资源,优先运行时效果。

2. 缓存资源效率优化:

每个版本的热更资源一般会在远端文件存储时按版本区分下载目录,这会导致热更时传递给 assetManager 的 remoteServerUrl 地址经常会更换。 但通常情况下,某个Bundle 的两次热更版本仅会有很少部分资源变更,大部分资源都是与上一版本相同的。 实际测试发现,当remoteServer 地址变更时,Bundle会无法复用之前版本的已下载资源,而会全量下载整个Bundle的所有资源。

期望: Bundle中的缓存资源查找策略能够可选性的忽略远程服务器路径。仅以BundleName+res+md5 做为缓存查找的依据。

**用途:**在热更新时,一个Bundle中大部分资源都是不用重新下载缓存的,在热更时仅下载那些md5变化了的资源,而忽略缓存中已有资源。

3. 需求:在运行时,只下载某Bundle的更新版本资源,而不加载Bundle对象。

通常情况下,在运行时想要后台静默下载Bundle的更新资源。 但目前Bundle 必须要先获取到Bundle对象后才能调用预下载资源等接口进入资源更新。

**期望:**能够在一个隔离执行环境下,加载、运行更新的Bundle对象,并可能提前执行预下载操作。而不会与当前已实例化的同名Bundle产生冲突。

雷某: 雷某劝诫年轻人不要提意见,背后的原因令人暖心
任某批复: 此人如果有精神病,建议送医院治疗,如果没病,建议辞退。

引某组:出得起定制费用吗?50W起哟。

现在的bundle系统着实简陋。。。


为啥我在windows根本不能加载本地bundle :face_with_monocle:

感觉引擎不会把项目中的需求实现的。可以根据提供的api自己改一下:face_with_thermometer: