这种没什么意义,如果本身资源服务器开了gzip的话,这个优化跟没有一样
你猜为什么都这样做. 包括引擎. cdn 开gzip,只是下载让你变快. 你读文件,io 难道 不受到文件大小的影响?
用抓包工具 看看加载了什么内容 网速是多少?别猜。
引擎这么做更多的应该是考虑到包体大小的问题,因为小游戏算包体大小的时候是不会根据压缩的时候算的。2m么小的文件,io读取影响微乎其微。而且你的json文件解析后还得还原key值,这块也是有消耗的。对于远程资源来说,这种处理方式完全是费力不讨好
大概率是没做并行, 并行做好了五倍起步。
可以自己下载远端文件,解压到本地,再看看加载时间
loadDir这种肯定是不对的,先把loadDir用其它方式代替掉,再看用时多少。
1、预加载,但是这个30s肯定有问题
2、压缩资源
3、音效有时候可以后加载
看了楼主说的描述问题挺矛盾的 一下子说下载只有一个zip加一个json 一下子又说下载MP3,50K,加载10秒;主场景图片,880K,加载10秒,主要就是这2个内容,其余得图片和mp3,下载都挺正常 你不是一个zip文件吗 那为什么又还下载mp3 50k 主场景 一个zip下载好不是解压就行了吗 到底是一个zip 还是多个文件说了那么多都没有描述清楚别人怎么帮你解决问题 直接网页打开f12看下你说的这个bundle下载了多大东西有那么难吗?
脑洞类游戏吗,我之前的解决方案是
1.一关一个包,通用音效放一起,ui放一起
2.启动的时候只加载主页UI 也加载第一关 但是第一关的加载不影响玩家进入
3.跳转关卡时有转场动画,可以在1-2秒的一个画面,一般是够用了,然后备用一个转圈圈动画,这个是给提前看广告跳关准备的,资源预加载完的可以不播放这些直接进入
4.在玩关卡的时候懒加载下一关,但是必须是在玩家不能操作的动画阶段时去加载!!不然低端机型性能会掉帧影响体验
5.还有一种方案是懒加载的,有些影响画面,就是把大预制拆成很多小预制,然后懒加出来,时间是不变的,但是进入快了,线性很多。程序看起来ok,但是策划一般不太能同意,策划喜欢进入就是全部好的
正常来说,需要啥加载啥,一般你的关卡资源会有一部分特定资源,一部分通用资源。所以你的加载应该是要考虑通过组装,只将依赖资源添加到你的”必要“资源里。举个实际的例子,如果王者荣耀是H5的,你应该不会考虑把所有英雄的所有皮肤都放在你的依赖列表里吧。
其次,拆分必要和非必要。通常来说,一些触发类特效,音屏你可以放在游戏内加载,如果需要用但资源还不存在,则跳过即可。
甚至你如果能接受,你所有资源都可以走后台下载,你的场景里全是占位符的图片,资源加载好了再渲染出来。
这样正常来说,你的loading时间会大幅度下降。毕竟这里面的耗时都是网络IO上的,你已经尽可能减少了网络IO,几乎百分百效率的加载了所有资源,如果还很久,那么只能说微信小游戏还是不太适合去作为3A游戏的平台
抓包看看,下载资源量 资源数, 另外上CDN了么
建议分两步,文件大小建议2m左右的;
- download 用tt接口,统计时长
- load接口,cocos接口 统计时长。或者 tt.readFile
实机加载情况怎么样?
解决了吗 可以给你远程看看
肯定要用真机测试啊
按你描述的整个加载过程大概吐下,zip 包形式的 bundle包,远程 bundle 加载,其中第一步是 zip 解压吧,然后 加载 bundle config, 其次才是你加载 dir 中的文件的过程,如果只有真机抖音环境才能复现,可以找一个安卓手机连接电脑,弄个国外旅游软件,使用 chrome://inspect/#devices 在你 Remote Target 找到你的页面,打开开发者工具,其中网络面板,性能面板,着重分析一下,能看到到底是网络加载耗时,还是其他,或者你尝试不压缩 zip 试一下呢?
楼主已经4天没动静了
感觉主要是网络面板那边分析下吧,看下具体的请求是下载耗时长还是响应耗时长700k下载要10s也太离谱了
感谢各位认真又详细的回复。问题已经解决,和程序本身没有关系,再次感谢各位的回复。
能说一下是什么原因不