测试环境:Cocos Creator 3.4 + 微信小游戏
一 简介
Cocos Creator 3.x
引擎生成的微信小游戏包,在启动时总有一个内置的loading闪屏图,如下所示:
这个loading闪屏默认是必须的,要去掉它的方法有多种,这里介绍一个极简方法,只要替换一个简单文件即可。
二 代码分析
先分析启动入口文件 game.js
,可以看到代码中导入了闪屏模块,示例如下:
const firstScreen = require('./first-screen');
...
firstScreen.start('default', 'default', 'false').then(() => {
...
firstScreen
对象控制闪屏的展示。按照正常思维,我们在game.js
中把所有firstScreen
相关代码删除,然后把这个 game.js
放到 build-templates/wechatgame
目录下就ok了。
这种修改game.js
的方法对于非MD5构建是没有问题的。但是很多情况下构建需要开启MD5,这时修改后的game.js
对于application.js
不会自动做MD5适配,就会出现无法启动的情况。
当然也可以再写个脚本去修改game.js
中引用到文件的MD5名字,但这就让事情变得更复杂了。
三 极简方法
本文提供的方法是不修改game.js
,只修改first-screen.js
文件,因为game.js
只调用了firstScreen
的 start、end、setProgress 三个函数,所以我们就只定义这三个函数,并且都没有实际逻辑,只是立即返回。这样既不会展示loading闪屏,也不影响启动速度。
代码如下:
function end() {
return new Promise((resolve, reject) => {
resolve();
});
}
function setProgress(val) {
return new Promise((resolve, reject) => {
resolve();
});
}
function start(alpha, antialias, useWebgl2) {
return new Promise((resolve, reject) => {
resolve();
});
}
module.exports = { start, end, setProgress };
把以上代码保存为一个名为 first-screen.js
的文件,放到 build-templates/wechatgame
目录下,下次用Creator构建后,它会覆盖引擎内置生成的 first-screen.js
文件,之后再启动就没有loading闪屏的过程,直接进入实际启动了。
四 总结
这种替换first-screen.js
的方法在Cocos引擎3.x任意版本均适用。
经测试,3.8引擎构建时会自动适配模版文件的MD5名字,所以替换game.js
的方法在Cocos3.x高版本中也是可行的,但还是不如替换first-screen.js
的方法简洁。