华为联机对战SDK适配微信开发环境

原创
06/21 11:32
阅读数 151

问题现象

使用Cocos Creator集成华为联机对战JS SDK后,导入到微信开发工具后报错如下:

VM28 WAGameSubContext.js:2 Unhandled promise rejection TypeError: Cannot read property 'Client' of undefined
	at e.<anonymous> (index.js:1467)
	at l (index.js:1426)
	at Object.next (index.js:1370)
	at index.js:1343
	at new $ (VM28 WAGameSubContext.js:2)
	at c (index.js:1319)
	at e.initSDK (index.js:1464)
	at e.start (index.js:1460)
	at cocos2d-js-min.js:1
	at r._invoke (cocos2d-js-min.js:1)(env: Windows,mg,1.05.2110110; lib: 2.24.1)

问题分析

华为联机对战SDK默认导出CommonJS模块,而在cocos2.X版本中使用的是插件脚本的方式导入SDKGOBE被挂载在window下使用,当编译成微信小游戏后,微信环境下缺少cocos中将GOBE挂载到window的动作导致运行时找不到GOBE报错。

解决方案

方案一Cocos Creator 2.x推荐使用插件脚本的方式引入SDK

1. 将联机对战SDK导入Cocos资源管理器后, 属性检查器 中勾选设置 导入为插件。

cke_16650.png

2. 在Cocos 中选择项目/构建发布,选择发布平台为微信小游戏,构建成功后将在./build目录下生成微信小游戏工程。

cke_29680.png

3. 在构建好的微信小游戏工程目录下的game.js文件中添加window.GOBE = require('./src/assets/GOBE/GOBE'); 手动挂载联机对战SDKrequire中的路径为GOBE.js文件的对应路径。

cke_39555.png

方案二:Cocos Creator 3.x 推荐使用外部模块方式引入SDK

1. 首先向Cocos工程下的 tsconfig.json 增加允许对包含默认导出的模块使用默认导入字段

       "compilerOptions": {

             "allowSyntheticDefaultImports": true,

       }

         cke_51585.png

2. 在Cocos中使用ES模块的导入方式引入联机对战SDK。

cke_67028.png

3. 使用Cocos构建成微信小游戏工程后可直接运行。

cke_77777.png

 

 

参考文档:模块规范 · Cocos Creator

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部