动态加载一张 930k 的 atlas 在微信浏览器上最快要5秒是正常的吗?我有 200 张atlas怎么办?

在模拟器和电脑端的网页动态加载只需要最多2秒,但是在微信浏览器或者手机浏览器上最快需要7秒,最慢需要13秒,UC浏览器最快需要3秒,这是正常的吗?还是我操作有误? 下面是我的项目文件

loadAtlas111.zip (1.1 MB)

但是我加载一张普通的2MB左右的图片只需要最多两秒,是atlas加载的时候还要计算atlas里碎图的偏移和大小等属性吗?

现在我遇到的问题就是有将近200张atlas,如果在进入游戏的时候加载完,进游戏起码最少五分钟,我就想先不加载,需要用的时候再加载,可是加载一张都至少需要5秒,我该怎么办?

如果有十张差不多大小的atlas和对应的plist,在合并了所有零碎的json文件后(论坛大神提供的民间方法),每次在模拟器上大概需要20秒才能打开,在微信浏览器上大概需要40秒左右才能打开,这是正常的吗?有没有优化办法?我的项目有将近200张atlas啊,要是全部放进项目,打开游戏起码五分钟啊

蛮王无敌正常是5秒:worried:

说真的,是不是正常的啊?有木有解决办法?

请问你的 atlas 碎图是不是特别多?如果是的话目前确实比较慢,我们会尽快解决这个问题。

是的,一张atlas有350张大概40*40的小图,希望尽快解决,不然没法进游戏

现在我想到另一个办法,我记得是不是可以cc.loader.loadRes(“image.plist/image001”, function(){})来加载图集中的一张碎图?
但是我现在用1.0.3为啥好像不行?还是说我记错了?没有这样的方法?

我現在用cc.loader.loadRes(“image.plist/image001”, function(){}) 也無法了

請問1.1版本有更新成新的做法嗎??

感謝

以前是的确有这个方法吗?只加载atlas里的某一张图片?我是隐约在哪里看到过,但是不能确定,还有我用的1.0.3也不行

新版本不允许一次加载一张碎图了

很抱歉我们没测试过这么碎的 atlas,这个问题我们会单独进行优化。

好的,幸苦你们了,还有为啥新版本不允许一次加载一张碎图啊?加载atlas比较慢,加载一张碎图是最好的办法了 - -,还有,我刚刚测试了,新建一个sprite组件,从atlas中选一张当sprite的spriteFrame,加载场景的时候只加载了spriteFrame那一张碎图,没有加载atlas里所有的碎图

如果不能单独加载一张碎图的话就只能靠你们优化加载atlas的方法了,你看看我的图集有多碎

我後來改用
cc.loader.loadRes(“xxx/xxxx”, cc.SpriteAtlas, function (err, atlas) {
sprite.spriteFrame = atlas.getSpriteFrame(‘xxx’);
}.bind(this));

就可以了

这就是加载一张atlas里所有的碎图,因为我一张atlas里碎图太多,所以太耗时了

我下载了这个范例,使用优化后的版本发布后,手机上点击按钮几乎是秒加载成功。

:heart_eyes:那新版本什么时候放出来啊,大神

:sob:大神我错了,我的项目我下载下来用没有优化的版本也是秒加载,是因为我场景里有一个spriteFrame引用了atlas里的spriteFrame,所以atlas在进入场景时就已经加载好了

还有个原因就是,loadRes的参数里我没有指定加载资源的类型(1.0.3的时候好像不需要指定类型,1.1.0开始就需要指定类型才能加载为spriteAtlas对象),所以导致加载完的资源是texture2d类型,并不是atlas,实际上加载texture2d一直都很快的

今天抢先拿到1.1.2 beta1版本,测试了一下,还是一样的比较慢

实在抱歉啊,大神:sweat:

我重新做了个正确的项目,麻烦你再帮我试试
loadAtlas111.zip (1.1 MB)

好的我试试.

:watermelon:非常感谢

我这边测试了下确实是秒加载,当然也有可能是我的手机网速问题……
请问你说的慢,是什么平台下的?使用的是什么网络?
(预览时不会采用任何打包技术,所以预览确实还是会慢,要发布后才会打包)

我是在微信浏览器下预览的,网络是局域网,没有打包试过,我马上试一下:grin: