2017年无意间写了两篇关于在 Cocos Creator 中使用 Protobufjs 的文章,随后开始了自己第一个副业产品pbkiller—屁宝杀手!没想到,一个小小的 Creator 插件工具,还活了这么久!

经过3年,直到现在还有人在使用!偶尔有人购买,每次 Cocos Creator 升级新版本导致 pbkiller 不能正常使用,都会有伙伴向晓衡即时反馈问题。

如果没有大家的帮助、发现 BUG 提供建议,估计就不会有今天的这篇文章,在此感谢大家的支持!

问题原因

上周末我将 pbkiller 在 Cocos Creator 2.4.0 上做了测试,已经将问题修正并且支持 Cocos Creator 2.X 所有版本,非常简单,只需要在 pbkiller.js 文件中增加两行源码即可,见下图:

屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本_扩展名

后面通过试用的伙伴发现,在 Creator 2.4.0 中,嵌套加载 proto 文件也会有报错。经过调试发现,加载 proto 文件路径的扩展名所致:

  •  
import 'player.proto';

上面的代码,也会在 protobufjs.js 内部使用带扩展名的文件进行加载,从而导致失败,所以除了修改 pbkiller.js 外,还将 protobufjs.js 做了修改,只需要将文件扩展名去掉即可,见下图:

屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本_node.js_02

解决方案

我们这里仍然是使用 cc.path.mainFileName  搞定!不知道,大家是否用过 cc.path 这个 API,它与 Node.js 的 path 模块非常像,上图中的 cc.path.mainFileName 是获取文件名的主干部分,就是去掉扩展名后剩下的。

我发现,学习一个引擎的 API,最好的方式是通过调试器的控制台,如下图:

屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本_加载_03

cc.path 中的接口能帮助我们解决不少关于目录路径的问题,通过函数的名字相信就能知道用处了吧!可以检查一下自己的项目中,是否存在有蹩脚的路径字符串拆分的代码,用引擎提供的 cc.path 会不会更好呢?或者你还有更好的方案,欢迎来留言!

免费升级

如果你购买了晓衡的 pbkiller, 可以按照上面讲解方式进行修改,即可兼容 Cocos Creator 2.X 所有版本。但是你觉得这个问题应该由晓衡完成,我自当仁不让!

若在 Cocos Store 商店买的伙伴,可以直接下载到最新 1.3.0 版本,已经上传审核中! 屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本_扩展名_04