3.7.2 微信小游戏首场景到游戏开始有一段黑屏

经过测试 3.7.2 以及 3.6.3 均有此情况,3.5.2未出现黑屏

定位到的 director.init() 会清理 first-screen.js 绘制的首屏图片,但是 builtinResMgr.loadBuiltinAssets()
_this3._loadProjectBundles() 以及 加载 launchScene 会花费较长时间,且皆在 director.init() 之后,导致会出现一段时间的黑屏

3赞

@jare 麻烦看看这个问题

1赞

我也出现啦

1赞


试试

1赞

移除嵌入的 first-screen.js 逻辑,用自己的首场景,首场景简单一点,只要个背景图。背景图出现后,再做其它的自定义事情。

副作用好像只有微信小游戏后台的首场景耗时统计的数据很差,其它还没发现

确实是可以的,对脚本进行分析为3处修改点

  1. firstScreen.end().then(() => application.start()) 改为 firstScreen.end().then(application.start())
  2. draw() 开头添加
    gl.disable(gl.SCISSOR_TEST);
    gl.disable(gl.CULL_FACE);
    gl.disable(gl.DEPTH_TEST);
  3. end() 开头添加
    gl.enable(gl.SCISSOR_TEST);
    gl.enable(gl.CULL_FACE);
    gl.enable(gl.DEPTH_TEST);

end注释掉的清理代码对结果无影响,可以在end时清理内存

1赞


您好,game.js中修改为 return firstScreen.end().then(application.start());后。不会黑屏,但是画布会被挤到左下角。目前还没找到解决办法。

还没有找到画布被挤到右下角的原因(可能是因为没有设置画布的位置)

找到了另一个解决办法:
通过查看Koei提供的解决方案中的代码。找到了问题所在:
是因为引擎默认提供的高清屏幕的画布适配方案是直接*2,然后再firstscreen中对图片进行进一步的自适应;
而 Koei的方案是将图片的自适应方案放在了game.js中;
所以这里需要对firstScreen中的图片比例进行修改,将原来的 (画布width/图片width)改为1即可,也就是不需要再适应画布。

1赞

https://github.com/cocos/cocos-engine/pull/15209 可以参考下这个修改, 因为是基于3.8的修改. 有部分差异代码注意甄别.

1赞
cc.director.once(cc.Director.EVENT_BEGIN_FRAME, () => {
  firstScreen.end();
});

这段代码在安卓小程序上没有问题,但是在IOS上会报错,无法进入游戏,我直接调用 firstScreen.end();就是正常的

1赞

小程序是指微信小游戏吗? 我们这边ios android多平台都测试过没出现过报错. 是修改了什么吗? 可以提供相关报错我看看

牛逼。。。。好用

可以理解成使用 3.8 就直接能解决这一黑屏的问题么

是的 解决了哈

赞!!!!