cocos发布微信小游戏去除默认加载页面

840 阅读1分钟

背景

最近在开发微信小游戏的时候遇到了一个首屏加载出现cocos logo问题,网络上的解决方案非常少,于是查看cocos转换微信小程序的代码得到了下面的流程去除logo

image-20231007104524306

第一步

首先在构建发布页面,如下图

image-20231007103558918

打开显示如下,将最小显示时间设置为0,logo显示比例设置为0,是否显示cocos水印钩除:

image-20231007103700434

然后发布,运行:

image-20231007103930719

接下来运行的时候我们发现,首屏logo不展示了,但是出现一个黑屏展示logo的问题

image-20231007104434564

然后我们打开下面打包目录:

image-20231007104651410

使用vscode打开项目代码,根据game.js下面的代码可以看到启动方法是在fist-sceen.js中,找到fist-sceen中的start函数:

image-20231007105205550

可以看到这里的start函数返回了加载一个图片,并执行添加材质和进度条的方法:

image-20231007105031844

我们将start函数改写成:

...省略
function tick() {
    rafHandle = requestAnimationFrame(() => {
        // draw(); // 注释掉着色器绘制方法,因为进度条的绘制是通过着色器绘制的,咱们把返回替换掉会导致此方法报错
        tick();
        if (afterTick) {
            afterTick();
            afterTick = null;
        }
    });
}
...省略
function start(alpha, antialias) {
    options.alpha = alpha === 'true' ? true : false;
    options.antialias = antialias === 'false' ? false : true;
    gl = window.canvas.getContext("webgl", options);
    initVertexBuffer();
    initProgressVertexBuffer();
    initTexture();
    // program = initShaders(VS_LOGO, FS_LOGO);
    // programProgress = initShaders(VS_PROGRESSBAR, FS_PROGRESSBAR);
  	// initShaders函数用于创建着色器程序。
		// loadShader函数用于加载和编译着色器代码进度条,所以咱们注释掉
    tick();
  	// return loadImage('splash.png').then(() => {
     //    updateVertexBuffer();
    //     updateTexture();
    //     return setProgress(0);
    // });
  	//替换为下面的函数返回 
    return new Promise((resolve, reject) => {
      afterTick = () => {
          resolve();
      };
  });
}