跳至正文

cocos3.x引擎去掉闪屏的一个极简方法

  • Cocos

测试环境: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的方法简洁。

标签:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注