前言
因为目前Cocos未直接适配快手,而快手本身的wasm支持不完善,所以需要进行一定的适配
分引擎方案
3.8.1方案
该版本,快手官方进行了适配,可以看官方的文档cocos creator 3.8.x spine.wasm报错处理方案,简单而言,就是用asmJS替代wasm。
3.8.2方案
因为引擎对微信的判断为强制wasm,所以只能修改引擎版本
- 升级到3.8.3以上
- 降级到3.8.1,且使用3.8.1方案
3.8.3及以上
该版本,引擎官方直接提供了选择,可以使用wasm、asmJS或都选,但是适配快手还是有问题,因为Cocos默认微信一定支持wasm,所以需要修改引擎代码
- 修改
resources/3d/engine/pal/system-info/minigame/system-info.ts
的代码
原代码修改为1
2
3
4if (WECHAT) {
return true;
}1
2
3if (WECHAT && typeof WXWebAssembly === 'object') {
return true;
}
如果确认快手不需要wasm,那么这样该就行了,如果想在快手上也使用wasm,那么需要继续下面的操作。
跟官方申请,加白wasm。
修改快手的适配文件,如下
1 | if(ks.getSystemInfoSync().platform === 'android'){ |
因为快手iOS的支持还有点差,所以这里只有安卓才开启wasm。当然,可以先把判断去掉,在iOS上测试下,如果iOS已经完善了wasm支持,也可以不要这个判断。
总结
在3.8.3版本后,官方对wasm的回退已经做了比较好的处理,只是因为pal下的判断有些不妥善(与官方沟通是,这块由对应平台官方维护,他们一般不会改,所以也能解释的通,为什么微信直接返回true了)。
当然,这个方案,不仅仅适配快手平台,对其它不支持wasm而需要通过构建微信小游戏支持的平台也一样试用。
原文链接: https://blog.xyzzlky.cn/posts/79fb9afb/
版权声明: 转载请注明出处.