2017年无意间写了两篇关于在 Cocos Creator 中使用 Protobufjs 的文章,随后开始了自己第一个副业产品pbkiller—屁宝杀手!没想到,一个小小的 Creator 插件工具,还活了这么久!
经过3年,直到现在还有人在使用!偶尔有人购买,每次 Cocos Creator 升级新版本导致 pbkiller 不能正常使用,都会有伙伴向晓衡即时反馈问题。
如果没有大家的帮助、发现 BUG 提供建议,估计就不会有今天的这篇文章,在此感谢大家的支持!
问题原因
上周末我将 pbkiller 在 Cocos Creator 2.4.0 上做了测试,已经将问题修正并且支持 Cocos Creator 2.X 所有版本,非常简单,只需要在 pbkiller.js 文件中增加两行源码即可,见下图:
![](https://i-blog.csdnimg.cn/blog_migrate/a470cbb17cfae23757d0742102197e61.png)
后面通过试用的伙伴发现,在 Creator 2.4.0 中,嵌套加载 proto 文件也会有报错。经过调试发现,加载 proto 文件路径的扩展名所致:
import 'player.proto';
上面的代码,也会在 protobufjs.js 内部使用带扩展名的文件进行加载,从而导致失败,所以除了修改 pbkiller.js 外,还将 protobufjs.js 做了修改,只需要将文件扩展名去掉即可,见下图:
![](https://i-blog.csdnimg.cn/blog_migrate/13c129dbbe516d413f0d5724f758f398.png)
解决方案
我们这里仍然是使用 cc.path.mainFileName 搞定!不知道,大家是否用过 cc.path 这个 API,它与 Node.js 的 path 模块非常像,上图中的 cc.path.mainFileName 是获取文件名的主干部分,就是去掉扩展名后剩下的。
我发现,学习一个引擎的 API,最好的方式是通过调试器的控制台,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/021a7d9811da6740fea45e6d7b3374ae.png)
cc.path 中的接口能帮助我们解决不少关于目录路径的问题,通过函数的名字相信就能知道用处了吧!可以检查一下自己的项目中,是否存在有蹩脚的路径字符串拆分的代码,用引擎提供的 cc.path 会不会更好呢?或者你还有更好的方案,欢迎来留言!
免费升级
如果你购买了晓衡的 pbkiller, 可以按照上面讲解方式进行修改,即可兼容 Cocos Creator 2.X 所有版本。但是你觉得这个问题应该由晓衡完成,我自当仁不让!
若在 Cocos Store 商店买的伙伴,可以直接下载到最新 1.3.0 版本,已经上传审核中!
![](https://i-blog.csdnimg.cn/blog_migrate/c42574aff1af10a1997a8406f64ae85b.png)
三年了,感谢249位伙伴的默默支持!
![](https://i-blog.csdnimg.cn/blog_migrate/f0afe7770c47b05a45f614df8c130c08.png)
在晓衡微店购买 pbkiller 的26位伙伴,可以通过微店、或微信发送购买记录获取最新版本!
当然同时也支持 Cocos 官方商城的伙伴!晓衡在线等你们哦!
游戏开发知识服务,技术精进副业挣钱
我们的目标是游戏界的「得到」