玩一玩中使用 cc.director.preloadScene cc.loader.loadRes 2.0 巨慢无比

cc.director.preloadScene 这个方法在玩一玩平台上, 时间消耗非常的久, 用 1.10 没问题, 2.0.5, 时间是1.10的 10倍不止,肯定是哪里被改坏掉了,有人遇到这个问题嘛? 我升级后足足等了40秒, 才加载好, 而1.10 却再3秒内

顶一个,我也遇到这个问题

肯定是报错了,或者加载超时了,检查一下吧

我也是遇到这个问题的,我是在h5平台的,加载场景真的慢很多,比1.0系列的慢,我也是醉了。。。。。

没报错呢,能正常跑,log看了,没有报错的,只是加载的时候慢。。。感觉是卡在解析场景文件这一步,加载资源因为我们做了进度条,进度条开始跑以后是很快的,就是进度条不动之前(这会是在解析场景文件)会卡很久


var GlobalVar = require("GlobalVar")

cc.Class({
    extends: cc.Component,

    properties: {
        tiplabel: cc.Label,
        progressBar: cc.ProgressBar,
        bg: cc.Node
    },

    onLoad() {
        this.progressBar.progress = 0
        if (cc.winSize.height > 1280) {
            this.bg.scale = cc.winSize.height / 1280
        }
        this.tiplabel.string = GlobalVar.dataMgr.getTips()
    },

    start() {
        this.m_nextScene = GlobalVar.SceneTo || "Main"
        this.m_simulatorSpeed = 1.0

        this.m_curProgress = 0.1
        var onProgress = (completedCount, totalCount, item) => { //进度回调
            //cc.log("LoadingScene onProgress", completedCount, totalCount)

            this.m_updateTimeTotal = 0
            let percent = completedCount / totalCount
            this.m_curProgress = percent
        }

        cc.director.preloadScene(this.m_nextScene, onProgress, () => {
        })
    },

    update(dt) {
        if (this.m_curProgress) {
            if (this.progressBar.progress < this.m_curProgress) {
                this.progressBar.progress += dt * this.m_simulatorSpeed
            }
            else if (this.progressBar.progress >= 1 && !this.m_jumpToOtherScene) {
                GlobalVar.alreadyLoadedScenesMap[this.m_nextScene] = true
                cc.director.loadScene(this.m_nextScene)
                this.m_jumpToOtherScene = true
            }
        }
    }

});

这是我写的loadingScene

楼主我觉得你的标题要加上玩一玩平台,我的游戏在pc浏览器,手机浏览器上跑加载是很快的

你可以试试 ios 手机,是不是比 android 加载快很多

不,肯定是有文件加载超时了

麻烦提供一个 demo 我们试试

PS: 我用的是最新的CocosCreator2.05

@jare 你好,抱歉Demo我不方便提供哦,项目还没发布呢,这个问题跟项目的资源多是相关的
我经过调试测试,最新的进展是这样的
1,首先要否定一下我上面的结论,在玩一玩平台整个加载时间不比其他平台慢, 从开始到结束时间上是差不多的,
2, 我这里一个场景preload的时间其实最多也就5, 6秒, 关键是进度条没有更新, 玩一玩平台preloadScene的时候,我上面组件里面的update 不会调用,另外就算我在onProgress里面更新进度条this.progressBar.progress = completedCount/totalCount,渲染也不会更新,所以我看到的是一进loaing场景,进度条一直不动,最后突然飞快
3,所以问题是玩一玩平台的preloadScene调用后,游戏引擎的逻辑update, draw 似乎是阻塞的。

上面所说的都是第一次进入一个场景的时候,第二次进同一个场景都是飞快的,我第二次进场景都是直接cc.loader.loadScene(对应场景),而不会由loadingScene中转的

https://forum.cocos.com/t/cc-loader-loadresarray/50617/5?u=dengzhuangfeng 参考了你以前的一个帖子
cc.macro.DOWNLOAD_MAX_CONCURRENT = 2; 这样设置在玩一玩平台也是没用的

这个是已知问题。QQ玩一玩的,等790版本会修复

能具体点解释一下吗,原因,如何修复的? @f693060089

等engine2.1 以及qq 790版本发布。很复杂,没法自己处理。

好的,谢谢

有没有可能是图片资源太大了

看来是加载进度条在玩一玩上得不到刷新的问题。应该是玩一玩在下载资源的过程中,把主进程阻塞了。

您好 我们最近一个项目 需要canvas 绘画路径图 您有时间兼职吗? 微信15267082522

不是进度条刷新问题。你可以向knox了解下情况。是玩一玩平台的bug,得改引擎和玩一玩适配。

目前有简单的hack方式吗

目前暂时没有,这个是玩一玩底层加载资源的问题,他们已经修复了,但是的版本是根据手 q 的版本的,所以需要等待