微信号:CocosEngine

介绍:Cocos引擎官方账号,第一时间为您送上引擎动态、精品教程、达人专访等干货,还会定期举办有奖活动喔!

微信小游戏 protobuf.js 快速解决办法

2018-01-05 19:00 C姐

最近不少开发者在尝试用 Cocos Creator v1.8 一键发布小游戏时,因为一些技术上的问题导致进程卡壳。集合社区反馈帖子来看,大部分开发者最近卡壳频率最高的问题当属 「protobuf.js 常在微信小游戏环境中运行出错,该怎么破?」


Cocos 插件商店之前曾上过一款叫 pbkiller 的插件。C姐联系了开发者张晓衡老师,希望他能为我们提供几个解决方案:


一、使用预编译 js



二、protobuf.js 5.x 动态加载方案



此方法是将 ProtoBuf.Util.fetch 函数替换成 cc.loader.load 函数。


之后加载 proto 文件需要使用异步方式



三、 protobuf.js 6.x 动态加载方案



protobuf.js 6.x 动态加载可以解决加载问题,但 protobuf.js 6.x 使用了 new Function()  函数动态生成代码,导致在实例化 proto 对象时微信会报错,此方法暂时不可取。


微信不支持 XMLHTTPRequest API,而 Protobuf 中正好使用了此 API,思路是使用 cc.loader 代替 XMLHTTPRequest。


需要注意的是,在微信开发者工具的运行环境中,当使用 cc.loader.load、cc.loader.loadRes 等函数时会经常出现回调不响应的情况(切换场景也不生效),需要全部关闭微信开发者工具,或清空缓存,再通过 Creator 运行游戏,有时可能还会要求反复操作多次才能生效。

 
COCOS 更多文章 Cocos2d-JS 适配、打包微信小游戏教程 微信上线小游戏,Cocos 助力把握新风口!|葡萄学院(周四开课报名中) 教程:微信小游戏的资源管理 元旦娱乐:跳一跳秘籍传授,轻松过 4000 分 微信小游戏适配层原理 & FAQ
猜您喜欢 √大数据论坛┃7月25日,大数据连接的未来——腾讯高峰论坛 说说EMC解决方案中的那些产品和案例 听腾讯云计算战略合作总监讲一个"普通人"的故事丨互联网寒冬系列讲座 未来程序员会被机器取代吗? 制定代码规范并不难,但你知道如何让它可执行吗?