首先在这里感谢昨天在公众号留言的网友蓝小野,感谢他提醒我的pbkiller插件在 Cocos Creator 2.0上不能正常工作的问题。

当creator遇上protobufjs—感谢有你,再战2.0_兼容问题

感谢蓝小野的反馈

 

pbkiller插件与《当creator遇上protobufjs》系列文章是开启我创作Cocos Creator教程的起点,可是之前有好长一段时间因为自己状态不佳,pbkiller插件都没有去更新维护。就连Cocos Creator 2.0这样的重大版本,我都没有即时给予pbkiller用户支持,在这里说声抱歉!再次感谢蓝小野同学的反馈提醒、感谢王楠的邀请参与Cocos商店建设、感谢Jare、感谢关注「奎特星球」的朋友,有你们的支持我才能走到现在。

下面介绍一下pbkiller新版本的内容:

1. 支持Cocos Creator 2.0

pbkiller这次升级最重要的就是支持Cocos Creator 2.0,在升级过程中发现Cocos Creator 2.0 在资源管理上有了新的变化。其中一个变化是文本资源在Cocos Creator 2.0 构建打包后不以原始物理形态输出,而以转换成了Cocos Creator的uuid文件名json格式的文件,看下面内容:

{  
    "__type__": "cc.TextAsset",  
    "_name": "ChatMsg",
    "text": "syntax = \"proto3\";\npackage grace.proto.msg;\nimport \"Player.proto\"...
}

其中的text字段就是proto文件的内容。

2. 兼容浏览器、原生、微信小游戏

对不少人来说protobuf的使用并不困难,阻碍大家在Cocos Creator中使用protobuf的难点是对不同平台环境的兼容问题。比如说在开发调试期间是正常的,发布到微信小游戏上就出问题了;或者在原生上是正常的,但H5环境下又不对了。经常是这类问题把大家的时间、精力给消耗掉了,不能很好的集中精力去创作游戏内容。

新版本的pbkiller任然坚持在Native、H5、微信小游戏三大环境的一至兼容性,同时保持向下兼容,目前测试环境如下:

 

版本平台 Native 浏览器 微信小游戏
1.8.2 ok ok ok
1.9.3 ok ok ok
2.0-rc1 ok ok ok
3. 预加载

为了解决模拟器、原生环境、微信小游戏的加载、兼容问题(protobufjs库使用了nodejs中的模块、微信小游戏不能使用XMLHttpRequest)。新版pbkiller要求在Native、微信小游戏中预先加载proto文件,预先加载主要是使用Cocos Creator提供的cc.loader接口去加载proto文件到内存,这样方便抹平不同平台的文件读取问题。然后就可以使用pbkiller封装的protobufjs以同步方式编译proto文件,一起看下面预加载用法:

//预先加载
pbkiller.preload(() => {     
    //编译proto文件
    let pb = pbkiller.loadAll();     
    //实例化proto对象
    let player = new pb.Player()
});

同时还要需要注意,在Cocos Creator构建时如果需要使用MD5 Cache选项时,代码中也必须使用预先加载方式,不然会因为找不到文件而报错。

4. 结语

我猜很多人都想知道像pbkiller这类的插件的销量如何,是否考虑过自己也做一个插件能帮助大家,同时能挣得一份认可和回报。

在这里向大家透露下pbkiller的销量情况,从2018年8月30开始开买第一单到2018年7月31截至卖出113份,而且7月31日竟然出售了4份。在这里感谢这112个pbkiller用户(其中有一份是我自己购买的),感谢有你们的支持让我再战Cocos Creator 2.0!

从上面的数据看pbkiller的销量其实是比较惨淡的,但每次看到能帮助大家解决问题,心里还是很高兴,主要是自己不善经营没怎么打理。如果你对自己有信心,能从帮助他人找到快乐,同时也能提升自己,一起来吧!让游戏的世界因你而更加精彩。