前言
因为目前CocosCreator有些平台没有直接适配,需要借助构建微信小游戏平台而这些平台本身的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
的代码
原代码
if (WECHAT) {
return true;
}
修改为
if (WECHAT && typeof WXWebAssembly === 'object') {
return true;
}
如果确认快手不需要wasm,那么这样该就行了,如果想在快手上也使用wasm,那么需要继续下面的操作。
- 修改快手的适配文件,如下
if(ks.getSystemInfoSync().platform === 'android'){
GameGlobal.WXWebAssembly = KSWebAssembly;
}
- 如果iOS也需要用wasm的话,需要跟官方进行加白,通过后,可以将安卓的判断条件去掉。但是平台在iOS的适配可能较差,需要多个版本仔细测试,将判断条件完善。
总结
在3.8.3版本后,官方对wasm的回退已经做了比较好的处理,只是因为pal下的判断有些不妥善(与官方沟通是,这块由对应平台官方维护,他们一般不会改,所以也能解释的通,为什么微信直接返回true了)。
当然,这个方案,不仅仅适配快手平台,对其它不支持wasm而需要通过构建微信小游戏支持的平台也一样试用。
原文地址
微信公众号: CocosCreator3.8适配快手小游戏方案
博客: CocosCreator3.8适配快手小游戏方案