【BUG,附demo】切后台回来经常会使渲染停止,逻辑却继续执行

版本号2.4.3
测试端:QQ浏览器(其他的浏览器没试出来,目测有部分h5游戏平台也是这样,有客服反馈过)
BUG描述
在PC上使用QQ浏览器测试的
游戏中频繁使浏览器最小化再最大化,游戏画面就卡死不动了,声音还能听到,游戏逻辑都正常在执行
也没有任何报错,比如log能打印出单位在update里坐标从a点走到了b点,但是游戏画面整个完全静止

cc.game.pause或者resume之类的都试了,没有用的,游戏逻辑一直都是正常在执行,只是画面静止

这个时候如果打开或者关闭F12、的话,画面就刷新正常了
除了F12,还有测试时候点击上面顶部机型选择、debug mode、showfps、pause等等按钮也能恢复,其他还没找到能恢复正常的方法。。。

复现demotestBug.zip (230.5 KB)

复现方法
对游戏进行锁帧,然后提高每帧的消耗,frameTime越大,越容易出现!再前后台来回切就行了

具体实现:在场景里新建个sprite节点,再建个脚本拖进去,运行后随机地最小化/最大化QQ浏览器就出现节点不动了,但看log输出是一直有在动的

记得使用
QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器
QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器QQ浏览器

脚本代码如下

start () {

    this.l=0;

    this.s=1;

    this.node.x=-375;

    //锁帧

    cc.game.setFrameRate(61);

},

update (dt) {

    //来回移动

    this.node.x+=this.s;

    if(++this.l>=750){

        this.s*=-1;

        this.l=0;

    }

    //随便做点大消耗的事情

    let a=0;

    for(let i=0;i<20000000;i++){

        a+=Math.pow(1.0012312342,10000)

    }

    cc.log(this.node.x,this.l);

}
1赞

试了,没有浮现。

你用QQ浏览器了吗?
用了还没复现的话加大update的消耗,提高frameTime

引擎大大能看看吗?

没有浮现,为此我还下了个qq浏览器~

2.4.3 是能复现,用 2.4.8 测试已经没复现。

赶紧帮他解决一下吧,都上线了已经 :grinning:

自定义引擎替换下这个文件试试:
CCGame.zip (9.0 KB)
定制引擎文档:引擎定制工作流程 · Cocos Creator
自定义时记得删除这个 .cache 文件夹,有时候可能因为缓存没生效
image

1赞

谢谢啊!我试完后来反馈~~~

解决了!!!十分感谢大大!!!

感谢兄台热心帮忙!!!辛苦你了!!!!

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。