CocosCreator中插件开发介绍(一)
摘要
以前写了一个生成热更新配置文件的插件没有记录下流程,导致现在想在写插件时发现脑袋空空(我是谁,我在哪),所以在此简单记录一下插件开发流程,具体相关资料请查阅官方文档。
版本说明
使用 CocosCreator 的 2.4.3 版本。
开始
创建项目:
打开CocosCreator引擎点击上方扩展–>创建新扩展插件–>选择一个安装路径即可,如下图:
文件介绍:
项目创建完以后我们打开创建的文件路径,这里我是创建在项目中的,扩展包的结构大致如下:
1 | hello-world |
注:将该文件夹放入到 ~/.CocosCreator/packages
(Windows 用户为 C:\Users\${你的用户名}\.CocosCreator\packages
),或者放入到 ${你的项目路径}/packages
文件夹下即可完成扩展包的安装。
定义你的包描述文件:package.json (官方文档)
每个包都需要一份 package.json
文件去描述他的用途,这样 Cocos Creator 编辑器才能知道这个包要扩展什么,从而正确加载。值得一提的是,虽然 package.json
在很多字段上的定义和 node.js 的 npm-package 相似,它们仍然是为不同的产品服务的,所以从 npm 社区中下载的包,并不能直接放入到 Cocos Creator 中变成插件,但是可以使用它。
1 | { |
解释:
name
String - 定义了包的名字,包的名字是全局唯一的,关系到今后在官网服务器上登录时的名字。插件若要上传到 Cocos Store,对包名有一定的限制,只允许使用 小写字母、数字,连字符(-
)、下划线(_
) 和 点(.
),并以 小写字母 或 数字 开头。version
String - 版本号,我们推荐使用 semver 格式管理你的包版本。description
String(可选) - 一句话描述你的包是做什么的。author
String(可选) - 扩展包的作者main
String (可选) - 入口程序main-menu
Object (可选) - 主菜单定义定义方式:
1.显示在最上方
1
2
3
4
5"main-menu": {
"newPackages/Hello World": {
"message": "hello-world:open"
}
}2.在 扩展 中才可以看到
1
2
3
4
5"main-menu": {
"i18n:MAIN_MENU.package.title/newPackages/Hello World": {
"message": "hello-world:open"
}
}panel
目前编辑器扩展系统支持每个插件注册一个面板,面板的信息通过panel
字段对应的对象来申明。其中main
字段用来标记面板的入口程序,和整个扩展包的入口程序概念类似,panel.main
字段指定的文件路径相当于扩展包在渲染进程的入口
入口程序:
每一个插件都可以指定一份入口程序,入口程序是在 主进程 中被执行的。通常我们会在入口程序中:
- 初始化扩展包
- 执行后台操作程序(文件I/O,服务器逻辑)
- 调用 Cocos Creator 主进程中的方法
- 管理扩展面板的开启和关闭,以及响应主菜单和其他面板发送来的 IPC 消息
当你定义好你的描述文件以后,接下来就要书写你的入口程序 main.js
了。定义如下:
1 | ; |
这份入口程序会在 Cocos Creator 的主进程中被加载,在加载成功后,他会调用入口程序中的 load
函数。并且会将定义在 messages
字段中的函数注册成 IPC 消息。更多关于入口函数中的消息注册,以及 IPC 消息的内容,我们会在 IPC简介 中讲解。
这里我们只要明白,入口函数中的 messages
字段中的函数,将会在主进程的 IPC 监听模块中,注册一份消息,其格式为 ${扩展包名}:${函数名}
,并将对应的函数作为 IPC 响应的函数。
// 当我们点击引擎菜单中 newPackages –> Hello World