Cocos Creater插件的开发
1:首先说为什么要去插件啊,插件这个东西是帮助敏捷开发,比如说你要开发原生的游戏,可能会接一些SDK,这些SDK大部分走的都是Java或者OC,你不可能每次打包都去添加一遍原生的代码吧!那也太麻烦了,写插件的目的就是为了让其在构建的时候,自动将Java和OC的代码自动写入工程,这样你就可以省去很多的麻烦。接下来,我会写一个简单的例子来抛砖引玉。
2:例子:给微信小游戏添加数据分析,目前的准备接入TalkingData, 接入方法如下:

然后我们再去CocosCreater 的官方看一下插件开发的方法:
https://docs.cocos.com/creator/manual/zh/extension/your-first-extension.html
大致意思就是,你需要创建一个文件夹,main.js 和package.json,最基础的试这个样子:
按照官方的文档,我们来写一下插件的配置:

然后是main.js的内容,我们先直接拷贝官方文档里面的一些基本的方法,内容如下:

这里简单说一下这个方法的作用:load()是插件被成功加载的时候执行的方法,
unload 是被卸载的时候执行的方法,message 里面的内容是与package.json的main-menu的内容方法名对应的。插件最基本的内容已经搞定,现在导入CocosCreater 的工程可以试一下看看是否能被识别,如果识别就说明配置成功了。创建一个工程,然后导入刚才写的插件到工程的packages文件夹下即可,

看到红框的内容说明插件已经识别成功了。
目前遇到的坑
(1) package.js 的内容是一定要细心,写错一个字母插件可能就会识别失败;
(2)package的name属性必须全是小写字母;
(3)main-menu 的内容一个地方必须保持一致,否则时间无法触发;如下,
如果不一致会报错,如下:

如果不够细心的话,可以直接去官网拷贝,然后修改就可以了,机智如我。
3:插件的核心内容开发
从talkingdata的SDK文档中可以知道,插件需要做的工作是:
1:将其中的tdweapp-conf.js和tdweapp.js文件放在您的项目的同一文件夹中,这个文件可以是微信小游戏构建之后的src文件夹下即可
2:在game.js文件开始,引入tdweapp.js文件,示例如下:
var tdweapp = require(’./sdk/tdweapp.js’);
3:将小游戏的配置信息填入tdweapp-conf.js文件,这个自己手写就可以不需要把功能写到插件中去。
ok,需求分析完成,那么接下开始写main.js 的业务逻辑了。
写代码之前要先把要拷贝的文件方法插件的文件夹下如下:

大概是这个样子:首先要监听引擎的的事件:before-change-files,要在插件被load的时候加载,下载的时候移除;
监听:Editor.Builder.on(‘before-change-files’, handleEvent);
移除:Editor.Builder.removeListener(‘before-change-files’, handleEvent);
如下:与之对应的事件是:handleEvent,在handleEvent 的函数里面需要进行平台判断,我们做的是微信小游戏即:

function trackBuildEvent的函数是固定的写法,主要是用来触发构建的事件。下面才是真正需要做的事情;
(1)修改game.js文件,因为要用到路径的信息和文件的操作,所以需要引入两个库即:
const Path = require(‘fire-path’);
const Fs = require(‘fire-fs’);
代码如下:

接下来是讲解时间:
(1)首先,取得路径,即option.dest,这个路径指的是:构建之后的项目目录,微信小游戏来说就是build/wechatgame,
(2) Path.join(),方法是连接路径 得到的结果是game.js的路径
(3) Fs.existSync 确定game.js 的文件是否存在,要修改文件必须要先把文件读到内存,即Fs.readFileSync,
(4) 修改文件是通过字符串的replace方法取代将想要写入的内容写入即可
(5) 将修改过后的字符串重新写入文件,即:Fs.writeFileSync,
最后一步是:将TalkingData的库文件拷贝到wechatgame/src文件下,即上图中的_copyFsupportFile方法,如下图:

这个方法用到的API基本上已经在上个方法里面已经说过了,用到的都差不多,接下我们打包一下看看所有的操作是否生效:先查看一下src文件夹下面是否有talkingData的两个文件:

是的成功了,game.js 文件也是:

现在是没有勾选MD5的,如果勾选了Md5的话,是否可能正常的引用呢?我们打包试一下:

再看一下game.js的文件中引用的md5值是否一致:

是的,我们可以看到是一致的,说明cocos creater 引擎官方做了相应的适配吧
总结:插件是为了开发方便,插件是可以针对每一个平台的开发,今天的例子比较简单,如果是android,Ios ,也是可以开发的,只是再多加几个判断而已。main.js的代码有些不详细的地方,其实我也是不是很了解,也是从官方的插件中,边猜边测试的试探中得出的结论,如果大家想开发更复杂的插件,也可以参考官方文档去开发或者是在cocoscreater 的安装目录下找到官方的FB插件,那个是android和IOS平台的相对来说复杂一些,API的使用来说其实是大同小异。FB的插件具体位置是在CocosCreator\resources\builtin文件夹下,有兴趣的可以自己去开发一些插件,谢谢观看

Cocos Creater 敏捷开发之插件开发相关推荐

  1. cocos creater 游戏开发工具方法

    /*** 观察者方法** @export* @param {*} obj* @param {Function} callback* @param {*} pointer* @return {*} {P ...

  2. 【cocos creater】仿《弓箭传说》

    项目介绍: 此游戏是由cocos creater编写,可发布到原生,h5,微信小游戏等各大平台上.此demo中实现了热门小游戏<弓箭传说>的核心功能,可提供参考,欢迎各位评论点赞 [coc ...

  3. 【cocos creater】1.仿《弓箭传说》-开发环境及项目搭建

    查看项目所有章节 首先进入cocos creater官网 https://www.cocos.com/creator 打开下载V 2.1.2版本,因为cocos creater的各个版本之间都有差异, ...

  4. 敏捷开发中的Code Review

    敏捷开发中的Code Review 一些敏捷团队在实施敏捷开发中忙于编码.忙于Unit Test.忙于沟通.忙于Build等,虽然也有编码审核阶段,但大都浮于表面,流于形式,效果不佳.本文结合实践,介 ...

  5. cocos creater

    1.在微信公众平台下载微信开发者工具; 地址:https://mp.weixin.qq.com/debug/wxagame/dev/devtools/download.html?t=2018115 2 ...

  6. 从瀑布模型、极限编程到敏捷开发

    从瀑布模型.极限编程到敏捷开发 ---软件开发管理者思维的变化 Jack zhai 软件开发是一种对人类智慧的管理,对人大脑思维的"工厂化"管理.人是有感情的.有情绪的.变化的.相 ...

  7. 网上商城代码实现_中国中铁网上商城转型敏捷开发模式,实现快速反应、快速迭代...

    △北研中心的同事给业务部门演示迭代成果中国中铁网上商城成功转型敏捷开发模式,实现快速反应.快速迭代.切实解决公司内部以及合作方的业务需求,更好服务多样化的客户群体.经历了两次每2周为一迭代的短期快速开 ...

  8. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

    [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...

  9. 一步步学敏捷开发:开篇

    一步步学敏捷开发:开篇 http://www.cnblogs.com/jetlian/p/3913687.html

最新文章

  1. LeetCode实战:最长有效括号
  2. PL/SQL中的数据类型隐式转换规则
  3. matlab 画函数图像
  4. xml转json和实体类的两种方式
  5. 成功解决FileNotFoundError: [Errno 2] No such file or directory: '/home/bai/Myprojects/Tfexamples/data/kn
  6. Android-ndk编译osgdb_3ds静态库
  7. ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
  8. 330 div+css Experience
  9. oracle 11g空表不能exp导出问题解决方案
  10. 1 Linux防火墙设置
  11. 那些年我们office_那些年,我们的传奇三
  12. go标准库的学习-encoding/base64
  13. 操作文件读写JSON的建议工具类
  14. Matlab PlotPub绘图工具箱
  15. VS2010 由于应用程序配置不正确,程序未能启动”--原因及解决方法
  16. ubuntu更换清华镜像源
  17. bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
  18. mysql无法打开excel_关于Navicat将Excel数据导入到MySQL中出现无法打开文件错误
  19. (2021年)IT技术分享社区个人文章汇总(编程技术篇)
  20. 解决QDialogButtonBox按钮的英文翻译问题

热门文章

  1. python versions compatibility_有人通过Macports在Snow Leopard中安装了python26...
  2. 咔咕(聊天工具)---免费绿色版,图片代替了文字
  3. 全民k歌导出音乐方法(包含未发布,已发布歌曲导的两种方法)
  4. 网页点击弹出QQ对话框
  5. Form derives from Form
  6. 合作伙伴眼中的鸿蒙,专访海雀科技研发总监李尹
  7. DFA算法实现的敏感词过滤器
  8. 招商银行如何关闭大众版和手机银行转账功能
  9. 国仁网络资讯:视频号如何快速热门涨粉、引流变现;超详细运营教程。
  10. Revit翻模软件:管件二维注释比例改变和【管道翻模】