3.6.0/3.6.1版本微信打包 首屏加载优化没用且黑屏

之前3.x某个版本做了微信平台的自动首屏加载优化,在引擎代码加载完成前会先渲染一张图片,但是3.6.0,3.6.1这个优化效果消失了,直接变成黑屏了几秒。
3.5.1版本的游戏这个优化有效,同样的游戏升级到3.6.0/3.6.1这个优化效果就没有了。
这可咋办,新游戏是用3.6.0开发的,难道要退版本吗。

相同游戏引擎版本降低到3.5.1就可以了。
引擎组的快修修这个bug吧,不然哪还敢升级啊!

方便录个屏看下情况?用 helloworld 测试没看出有什么区别

同项目比对.rar (2.7 MB)
同一个项目的3.5.1版本和3.6.1版本微信加载情况。
通过逐帧播放,发现3.6.1其实还是有一瞬间加载了优化的图片,但是马上就被黑色屏幕盖住了。

自己顶一下

自己顶一下*2

有定制过构建模板?3.6 的流程有点不同,新建的空工程也会?

空包也会出现这种情况。
新建空项目,在项目目录下创建build-templates文件夹,在该文件夹下再创建一个wechatgame文件夹,然后随便复制需要替换的图片,名字叫splash.png。
需要resources下的文件多一些,完全空包的话就瞬间加载完了,就看不出问题了。
我导入了一个石头模型,然后复制了5-6次(确保打包后的文件大一些但不要超过上限),把resources文件夹勾选为微信分包,打包。
打完包后11m左右。
3.6.1就会出现加载黑屏。而3.5.1就可以正常显示提前准备好的首屏图片。

我把工程发一下
地址https://pan.baidu.com/s/1tc9ZWmlLjTdGtOKL6dN9Ww?pwd=1234
提取码1234

测试是有首屏,只是很快就过去了,你如果测试没有,打开微信小游戏那个开发调试,看下有没有报错,刚开始看是 demo 中使用了 3d 粒子系统,项目设置里却把 3d粒子系统模块剔除了.

你用引擎3.6.1版本打包测过了吗
我发在百度云版本是3.5.1,这个版本是有首屏加载的。
粒子那个可能当时又在测试粒子材质修改啥的,忘记删除了,直接删除打包就可以了。

自己顶一下

wechatgame.zip (3.5 KB)
替换这两个文件看看是不是你要的效果

1赞

确实解决了!
非常感谢!

替换了一下发现了新的问题。
首屏图片大小完整屏幕的一半左右了!
这个是微信模拟器上的


手机上更小了!
这该怎么解决?

你要全屏展示这个图得在 firstscreen.js 里做下适配 ,updateVertexBuffer 里面

请问该怎么修改呢。
让我修改 firstscreen.js里面的updateVertexBuffer方法有点困难 :joy:

first-screen.js这个函数进行适配更改

function updateVertexBuffer() {
let d_h = canvas.height;
let d_w = canvas.width;

let t_h = image.height;
let t_w = image.width;
let scale = 1;

let ratio1 = d_h / t_h;
let ratio2 = d_w / t_w;
// 根据宽度进行首屏适配,ratio1高度这个暂时用不到
let ratiomax = ratio2;

let i_h = Math.round(t_h * ratiomax);
let i_w = Math.round(t_w * ratiomax);

let r_w = d_w / i_w;
let r_h = d_h / i_h;

r_w = r_w * scale;
r_h = r_h * scale;

const widthRatio = 1/r_w;
const heightRatio = 1/r_h ;
const vertices = new Float32Array([
    widthRatio, -heightRatio, 1.0, 1.0,
    widthRatio, heightRatio, 1.0, 0.0,
    -widthRatio, -heightRatio, 0.0, 1.0,
    -widthRatio, heightRatio, 0.0, 0.0,
]);
gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);

}

2赞