从零开始的Cocos Creator编辑器插件开发

最近开始学习使用Cocos Creator,在研究的过程中发现,Cocos的插件开发有几个比较难入门的地方,因此在完成自己的学习后对学习的经历进行了整理,现在分享给大家。

本文为Cocos Creator编辑器插件的入门级教学,有经验的同学可以直接划走。

本教程基于的Cocos Creato版本为:3.3.2

2.x如果项目允许建议升级3.x 3D是真的香^_^

插件制作

在开发过程中,会遇到编辑器功能不够用的请, 此时需要对引擎进行扩展,这里有两种扩展方式

  1. 使用引擎开发runtime的插件,实现方式可以参考store内的(Shader Editor) ,适合没有编辑器开发经验的同学。
    此方法的缺点是必须运行项目在浏览器内进行,不太适合配合引擎工作流的方式工作。
  2. 使用Vue + TypeScript进行开发,适合对网页编程比较熟悉的同学。
    另外这种方式的优势是在编辑期也能看到效果,比较适合和美术同学配合时使用。
    本文主要介绍下第二种方式。

安装

1. 装备工作:

需要安装Node.JS

在命令行内输入npm -v 可以查看Node.JS的版本。如果没有可以去官网下载
Node.JS官方地址: http://nodejs.cn/

image

2. 打开编辑器,在编辑器的菜单上选择 扩展->创建扩展

image

之后会弹出如下的面板:

image

我这边选择的是Vue3.x Panel 的方式创建。(不太清楚2.x和3.x的区别,所以选择了最新的)
输入自己插件名字后点击创建即可。

3. 查看插件:

  1. 在菜单上的【扩展->扩展管理器】内找到对应的插件,按照下面的图示打开文件夹,之后使用VS Code打开


    插件查看

4. 工程结构

工程结构

图为插件的工程目录

可以看到,工程由声明文件和源代码部分组成,开发编辑器的主要工作集中在template和src这2个目录。
在最下方有一个package.json文件,如果学过js就知道package.json是js的项目定义文件,定义项目需要的模块以及项目的配置信息。

Package.json

图示内定义了插件的菜单和需要监听的编辑器的消息

Vue

图示为Vue的Html和源代码

编译插件

Cocos Creator的插件是Typescript了,编辑器不能直接使用,我们需要将插件编译为js,下面的过程演示了如何编辑js
注意需要安装tsc (即TypeScript)。
如果没有,在命令行内输入 npm install -g tsc 即可安装。

1. 在package.json内找到scripts这个字段

scripts

这两个脚本定义了插件是如何进行编译的。
在命令行内输入 npm run build 来进行编译

2.下载必要的模块

在VScode内打开命令行工具,输入 npm run build 之后可以看到有一些报错:


image

查看这些报错:


image

这些报错是因为缺少对应的module,我们使用 npm install 命令则可以把这些模块进行下载。


image

依次输入:

npm intall fs-extra
npm intall path
npm intall vue

都安装成功后再输入: npm run build

如果安装失败,则需要检查网络是否正常,Node.JS的安装情况.


image

图:输入npm install

编译成功后再编辑器内刷新插件即可被加载:

image

图:刷新插件

之后编辑器将不会报错:


image

消息监听

Cocos Creator 是多进程架构,因此渲染进程和主进程是分开的,如果要去渲染进行中获取某些信息,或者监听编辑器的行为,都需要使用事件系统。
Cocos Creator 采用的是进程间通信 inter-process communication(IPC)的方式进行的。

image

图示: Cocos Creator的多进程架构

我们来看一个场景加载完毕(ready)的例子:

1. 打开package.json

image

在message段内添加如下的代码:


image
  "scene:ready": {
                "methods": [
                    "initData"
                ]
            }

之后打开main.ts:


image

在methods内添加如下的代码:


image

之后输入命令: npm run build


image

注意我们在修改了ts以后,并不会自动编译成js,因此我们对代码的修改都需要输入上述的命令

之后我们在编辑器内点击刷新插件的按钮


image

2.测试事件:

我们随便打开一个和当前场景不同的场景:


image

在场景完全打开之后命令行则会显示我们打印的语句:


image

证实插件已经加载成功,并正确的监听了场景加载完毕的事件。

数据查询

在插件内,我们经常需要获取某些组件,预制体或者资源的详情,这些没有办法直接从渲染进程获取的东西,我们可使用IPC的方式去进行查询。

1. 数据查询

这里来看一个查询场景信息的例子:


image
query-node-tree 事件可以后去到场景所有的节点的信息。

这里截图了部分信息:


image

如果你不清楚编辑器开放了那些事件,可以打开开发者->消息列表来进行消息录制:


image
image

图示展示了Cocos Creator目前开放的消息列表。

另外如果不清楚编辑器的消息广播流程,也可以使用 开发者->消息调试工具 菜单来进行录制:

2. 消息调试

image

图示为消息调试面板

打开该面板以后,点击录制按钮,之后对编辑器进行操作,则可以记录下编辑过程中编辑器派发的事件信息。

image

图示演示了场景保存过程中,编辑器所派发的事件列表。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容