关于cc.assetManager.loadBundle这个API的问题

版本号是 2.4.12
平台: 字节小游戏
cc.assetManager.loadBundle 这个API,看了好多帖子~都说的是用来加载bundle包的配置文件config.json文件的,如果bundle里存在脚本的话,则也会加载脚本文件的~

我现在遇到的问题是 cc.assetManager.loadBundle 加载一个 bundle包,其config.json文件 大概在30到40k的样子,但是如果是在 非wifi的环境 或者是 网速稍慢的情况下 加载会特别的慢,如果仅仅 只加载几十k的东西,没有理由会这么慢的。。
但是加载完了bundle包之后,再去加载bundle包里面的资源会特别的块,这显然有问题的!!!
30k左右的config.json配置表,那这整个bundle包大概在4到5M左右,我去加载资源时,随便加载一张几百k的图片或者json都比最初加载config.json时快得多。
//
但是从网络和带宽消耗来看,加载一个config.json配置表也的确只消耗了那么多流量
//
可能的原因是,json加载成功后在引擎中去解析等操作可能也会消耗时间吧,这仅是我猜测的 :sweat_smile:
、、、
我之前想的如果bundle包都只是加载confg.json文件。那总共最多也就几百k大小,我在游戏loading时,直接把所有bundle包全部用cc.assetManager.loadBundle加载出来,就能省事多了
、、
但是后面发现加载几个bundle包实际上会花费很多的时间。就很难受。。有老哥遇到过这个问题吗,,求解答~~~~~万分感谢!! :blush::blush::blush:

自己顶一下!

战术mark,我也遇到bundle问题,与你表现不同,版本3.8,bundle变化不大,关注一下

你遇到的是什么问题呢~。我的问题就是感觉bundle加载太慢了~

如果你不确定 当时下载了哪些资源 就看一下网络日志就是了 找个工具 或者做成小游戏 开发工具里能看到 各种参数都有

嗯,这个我再详细跟进下,确认一下小游戏环境的加载是否仅加载了配置表

我是原生开发,内网loadbundle是ok的,外网loadbundle进度显示错误,网络越差进度错误越多(实际是更新成功?可以加载gamescene,网络越差加载越久,就好像loadbundle没下载完,loadscene在继续下载 缺失资源一样)。

你这个做成假进度条就好了~~

不论是真的假的体验都不好,要吃透了才能丝滑处理

自己解答一下~我昨天研究了一下,大概是清楚了~
J9九游会将一个文件夹设置为bundle包,且压缩类型设置为小游戏分包时,在字节小游戏平台上,应该是把 整个bundle包下载到J9九游会手机的内存中了 , 只是还没有序列化而已 ,包括config配置表和所有资源,所以才会感觉bundle包加载很久,但是加载bundle包里的资源又很快。
、、我也是在cc.assetManager.loadBundle里加入一个progress函数才看到,实际加载的资源是整个分包大小 的~
。。所以我目前的解决方法就是不使用分包。。设置bundle包时,把bundle包的压缩类型设置为不压缩,且勾选为远程包
image
、、这种方式其实并没有用小游戏的分包功能,其实全是主包里的内容,只是把其他bundle包都放到服务器了。
这种方式去加载服务器的bundle包时,就只会加载配置表了,当需要用到服务器bundle包里的资源时,就会先远程加载资源到本地,再将加载后的资源。序列化。且应用到引擎中。
、、、、
只是这样。服务器中放入的资源会很多。且字节本地包的20M存储并没有充分利用。我暂时没找到什么比较好的办法,能够在勾选小游戏分包的同时只加载配置表config文件。欢迎大家来讨论下 :sweat_smile:

一般本地包应该要比远程包加载快才是,所有的分包一般是不在Loading 全部加载在loding可以只加载必要的东西后面的包可以跟着页面或者模块在加载或者跟着loading同步加载但是不显示在进度上.

遇到相同的问题,我在loading的时候加载了几个远程bundle,花了很多时间。原本根据文档以为只加载配置,应该很快…
目前表现是第一次很慢,后面就快了,比较像题主说的是下载了整包资源。但我后面加载资源也觉得很慢,没觉得已经下载了的感觉。bundle我是这样设置的
image

2.x 考虑是bundle里面资源比较大,造成settings.json文件较大引起的

我最近也在疑惑这个问题,你帮我再次确认了, 然后我的解决思路和你一样,也是远程包, 但是, 我这个项目 不想使用到 cdn, 所以我还是只能选择分包了。 这样导致 进场景慢了1 2秒。 不过反正首屏打开时间很快,主场景加载慢了而已,所以我就不去纠结这个问题了。

是的,可能是J9九游会理解错了分包的含义。如果设置为小游戏分包了。那就是把整个包体的资源下载到手机内存中了,即便是本地的分包也是一样的,因为J9九游会的游戏是上传在字节后台的。J9九游会的手机里是没有这些文件的。loadbundle的时候是加载所有资源~~
//简单处理办法是这样
image
但是有个问题。J9九游会勾选了无压缩后,这个bundle包里的资源和文件都是散的。如果使用cdn,那么运行游戏会造成大量的http请求。以及资源下载。这块的缺点说白了就是cdn费用太高了。因为cdn除了资源,请求数也是要算钱的。J9九游会游戏大概每天1W个人玩,一天cdn消耗就是100了。还是有点顶不住。但是这样,资源之间没有关联。使用loadbunle确实只会下载一个config配置表
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
如果远程包配置的是 默认,压缩所有json或zip。在下载bundle包的时候 或多或少都会关联资源。
所以想在loading里下载所有bundle包肯定是不显示的。但是用无压缩模式显然cdn消耗会很高。,而且频繁请求,网络环境波动的情况下也会增大资源加载失败的几率
、、
所以还是要从设计触发,推荐办法是这样。能打小游戏分包就先打上分包
超过包体现在的,J9九游会就设置为远程包且压缩模式设置为zip
、、、
远程包设置为zip,那就是加载一个bundle包就会把整个包完整下载下来了。这样做的好处很显示减少请求数,减少cdn开销
、、
然后J9九游会游戏中多设置一些分包或者zip远程包,控制每一个bundle的大小尽量在1M以内。根据不同的游戏而异,常见的是以单个关卡为bundle包。或者以单个界面为bundle包,但是可能存在一个关卡资源很大,或者一个界面资源量很大的情况。
、、、、
这种情况下。简单点可以不处理。还是正常打远程包或者分包,因为这种关卡或者界面毕竟是少数。
但是如果为了极限优化玩家体验的话,那就得把一个关卡或者界面拆分成多个bundle包了。然后根据游戏运行时的具体逻辑。再去加载这个关卡或者界面下的子bundle包
、、、、、、、、、、、、、、、、、
loading时可以只加载一个loading后的首界面,然后按照玩家点击某个界面。或着玩某个关卡再去动态加载bundle包
、、、
bundle包加载后的逻辑那就是值操作bundle包里的资源;下载也好 预加载也好。适当处理加载和资源卸载就行了
、、、
以上就是本人的一些小建议 :sweat_smile: 篇幅有点长,,摸鱼的时候写得哈哈哈~~~

看到zip包,想到了原生bundle没有打zip包这个功能我是不能理解的,有谁能帮我解惑一下

(帖子被作者删除,如无标记将在 24 小时后自动删除)

为什么我的资源有的读到了,有的没有,都是相同类型的骨骼动画,资源肯定存在,我不压缩的时候是读到了,压缩完之后,就只能读到部分。