2.4构建的工程手机扫码第一次打开会有3-5秒的黑屏时间,然后才显示首场景

  • Creator 版本:2.4.3

  • 目标平台: 字节开发者工具和手机预览

  • 重现方式:手机清缓存或者第一次扫描测试二维码,开发者工具点击清除所有缓存后重新加载工程

  • 首个报错:
    首次打开:


    打印这个警告后卡3-5秒才加载首场景(loading场景),手机表现就是黑屏3-5秒才进入loading场景

第二次打开:

加载首场景的速度大大变快,基本看不到黑屏

怀疑2.4版本第一次在创建文件夹或者下载什么东西导致时间很长,而且这个过程又是同步的,导致黑屏很久才加载首场景,2.3版本就没这个问题。第一次也是迅速能看到首场景

  • 之前哪个版本是正常的: 2.3.3
  • 手机型号:
  • 手机浏览器:
  • 编辑器操作系统:
  • 重现概率:必现

Navigated to http://127.0.0.1:20001/static/dist/public/5101521c7b420be9a42786a120b0167e/game.html?windowId=4
adapter-min.js:1 {model: “iPhone 6”, pixelRatio: 2, windowWidth: 667, windowHeight: 375, system: “iOS 10.0.1”, …}
adapter-min.js:1 Read json failed: path: ttfile://user/gamecaches/cacheList.json message: readFileSync:fail

Navigated to http://127.0.0.1:20001/static/dist/public/5101521c7b420be9a42786a120b0167e/game.html?windowId=4
adapter-min.js:1 {model: “iPhone 6”, pixelRatio: 2, windowWidth: 667, windowHeight: 375, system: “iOS 10.0.1”, …}
adapter-min.js:1 Make directory failed: path: ttfile://user/gamecaches/resources message: mkdirSync:fail file already exists http://user/gamecaches/resources
makeDirSync @ adapter-min.js:1
makeBundleFolder @ adapter-min.js:1
bundle @ adapter-min.js:1
o @ cocos2d-js-min.js:1
(anonymous) @ cocos2d-js-min.js:1
retry @ cocos2d-js-min.js:1
download @ cocos2d-js-min.js:1
load @ cocos2d-js-min.js:1
61.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
async @ cocos2d-js-min.js:1
n.exclude @ cocos2d-js-min.js:1
forEach @ cocos2d-js-min.js:1
61.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
(anonymous) @ cocos2d-js-min.js:1
65.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
async @ cocos2d-js-min.js:1
loadAny @ cocos2d-js-min.js:1
loadRemote @ cocos2d-js-min.js:1
loadBundle @ cocos2d-js-min.js:1
window.boot @ main.js:61
(anonymous) @ game.js:27
Je @ VM142:1
qe @ VM142:1
(anonymous) @ game.js:27
(anonymous) @ VM141 game.html:313
loadScript @ VM141 game.html:315
(anonymous) @ VM141 game.html:299
(anonymous) @ VM141 game.html:314
loadScript @ VM141 game.html:315
(anonymous) @ VM141 game.html:298
adapter-min.js:1 Make directory failed: path: ttfile://user/gamecaches/main message: mkdirSync:fail file already exists http://user/gamecaches/main
makeDirSync @ adapter-min.js:1
makeBundleFolder @ adapter-min.js:1
bundle @ adapter-min.js:1
o @ cocos2d-js-min.js:1
(anonymous) @ cocos2d-js-min.js:1
retry @ cocos2d-js-min.js:1
download @ cocos2d-js-min.js:1
load @ cocos2d-js-min.js:1
61.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
async @ cocos2d-js-min.js:1
n.exclude @ cocos2d-js-min.js:1
forEach @ cocos2d-js-min.js:1
61.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
(anonymous) @ cocos2d-js-min.js:1
65.e.exports @ cocos2d-js-min.js:1
_flow @ cocos2d-js-min.js:1
async @ cocos2d-js-min.js:1
loadAny @ cocos2d-js-min.js:1
loadRemote @ cocos2d-js-min.js:1
loadBundle @ cocos2d-js-min.js:1
window.boot @ main.js:61
(anonymous) @ game.js:27
Je @ VM142:1
qe @ VM142:1
(anonymous) @ game.js:27
(anonymous) @ VM141 game.html:313
loadScript @ VM141 game.html:315
(anonymous) @ VM141 game.html:299
(anonymous) @ VM141 game.html:314
loadScript @ VM141 game.html:315
(anonymous) @ VM141 game.html:298
assets\start-scene\index.js:1 getSystemInfo success devtools
success @ assets\start-scene\index.js:1
(anonymous) @ VM142:1
f @ VM142:1
(anonymous) @ VM142:1
_ @ VM142:1
(anonymous) @ C:\Users\admin\AppData\Local\Programs\bytedanceide\resources\app.asar.unpacked\simulator-sdk\dist\preload\bgPreload.d3609718ac4077d9ed8f.js:277
a @ C:\Users\admin\AppData\Local\Programs\bytedanceide\resources\app.asar.unpacked\simulator-sdk\dist\preload\bgPreload.d3609718ac4077d9ed8f.js:29
(anonymous) @ C:\Users\admin\AppData\Local\Programs\bytedanceide\resources\app.asar.unpacked\simulator-sdk\dist\preload\bgPreload.d3609718ac4077d9ed8f.js:29
u @ C:\Users\admin\AppData\Local\Programs\bytedanceide\resources\app.asar.unpacked\simulator-sdk\dist\preload\bgPreload.d3609718ac4077d9ed8f.js:29
_tickCallback @ internal/process/next_tick.js:61
cocos2d-js-min.js:1 Cocos Creator v2.4.3
cocos2d-js-min.js:1 LoadScene db://assets/scenes/Loading.fire: 56.422119140625ms
main.js:13 Success to load scene: db://assets/scenes/Loading.fire

对了,有2个远程压缩包放在服务器进行远程加载了

不用加载远程压缩包的方式就不会出现第一次长时间黑屏

你需要一个专门的加载场景, 这个场景不依赖其他的资源包, 游戏开始进入这个场景
在这个场景的start 里面,加载其他东西

1赞

+1 应该是这样子

就是目前的首场景loading,loading所有依赖资源都通过勾选构建面板的初始场景分包放首包了

应该是首场景需要下载的资源太多了,建议做一个加载用的场景,否则首场加载太多资源会出现长时间的黑屏
当然第二次进入会有缓存,就快了很多
如果首场景资源不多,构建的时候也可以勾选首场景分包,首场景的资源会被放在包内
这样进入首场景的时候就会快很多

这个警告可以无视,是第一次读取缓存失败的警告

1赞