本系列教程转载自公众号【许彦峰】,作者是 Cocos “插件小王子”许彦峰,策划良久。文章从个人角度,阐述对新插件体系从零入门的全新理解。阅读时间 15 分钟左右,部分教程附带简洁明了的代码说明,按照教程一步一步操作,能够顺利运行插件。希望本系列教程,能让你阅读爽快的同时,又能学到干货!

hello-world

学任何新知识,最快的入门方式莫非 HelloWorld。

跟着我 3 步搞定,不需要编写一行代码,2 分钟轻松入门 Creator 3D 插件。

1. 创建插件项目

我们需要先下载 Cocos Dashboard,然后在 Dashboard 中下载 Creator 3D,这里我使用的是 v1.2.0:

新建并打开一个 Creator 3D 空项目,然后找到项目的 packages 目录,如下图所示新建对应的文件和目录:

2. 设置插件基本信息

我们在package.json里面定义一些插件信息。

比如插件名字、版本号、作者、描述等:

{"name": "hello-world","version": "1.0.0","author": "xu_yanfeng","description": "creator3d插件 hello-world"
}

3.在编辑器中查看插件

让我们回到 Creator 3D 编辑器中,点击菜单栏中的扩展->扩展管理器

打开扩展管理器面板,切换到项目选项卡,即可看到hello-world插件:

可以看到,展示的插件信息,就是我们刚刚在package.json里面定义的信息。

如果编辑器始终没有发现该插件,我们可以尝试重启编辑器。

因为目前我们还没有编写任何插件的逻辑,所以,启用按钮暂时不可用。

至此,我们的第一个插件就编写完毕了!是不是很 easy!

现在插件还没有任何功能,后续我们将一步一步完善!

给插件添加菜单

我们创建了一个插件,并且可以成功被编辑器所识别、加载。

有时我们希望能够在编辑器菜单栏中,能够显示插件自己的菜单。

在 Creator 3D 插件里面,自定义插件菜单,非常简单:

1.定义插件菜单

打开插件的package.json文件,

{"name": "hello-world","version": "1.0.0","author": "xu_yanfeng","description": "creator3d插件 hello-world","contributions": {"menu": [{"path": "插件","label": "自定义菜单"}]}
}

如上所示,增加contributions属性,并在里面增加menu来自定义插件菜单。

  • path:插件菜单的显示位置,支持a/b/c表示多级菜单。

  • label:菜单名字。

contributions是 Creator 3D 插件中非常重要的一个配置属性,大部分插件功能都是配置在里面。

2.在编辑器中查看插件菜单

回到编辑器中,发现菜单栏并没有出现刚刚我们定义的新菜单。

我们打开扩展管理器,点击重启(必要情况下,可能得重启下编辑器)。

此时,我们刚刚定义的菜单,已经成功显示在编辑器的菜单栏中。

给插件菜单添加逻辑

点击菜单我们需要编写一些自己的逻辑,我们该如何做呢?

首先我们需要知道,插件整体的设计理念是:消息

1. 设置插件菜单的响应消息

如下所示,我们修改下package.json

{// ..."contributions": {"menu": [{"path": "插件","label": "自定义菜单","message": "onMenuClick"}],"messages": {"onMenuClick": {"methods": ["log"]}}}
}
  • 给菜单添加一个message属性,属性值就是响应的消息名字onMenuClick

  • 插件新增了一个messages字段,这里面定义了整个插件的所有消息,包括菜单的响应消息。

从配置中,不难发现onMenuClick消息最终要调用log方法,那么log方法的具体逻辑,又该写在哪里呢?

2.编写消息的具体逻辑

package.json里面,我们给插件新增一个main字段,给插件绑定一个脚本,之后所有插件相关的逻辑,我们都写在这里。

{// ..."main": "./main.js",// ...
}

我们在插件当前目录,新建一个main.js

并新增一个log方法:

这里的log一定要和消息onMenuClick里面设置的消息名字一致,才能正确关联触发。

exports.methods = {log () {console.log('hello-world');}
}

3.编辑器中测试下

回到编辑器中,和之前一样,我们需要在扩展面板重启并启用下插件(必要情况下,可能得重启下编辑器)。

然后我们点击插件的菜单,就能在控制台打印hello-world

整个过程还是比较绕,接下来详细地给大家详细介绍下插件消息,帮助你更好地理解消息机制。

给插件添加快捷键

我们日常使用的软件,一般都有快捷键,插件同样也支持啦。

Creator 3D 插件中设置快捷键非常简单,我们需要这样做:

1. 配置快捷键

如下所示,修改package.json

{// ..."contributions": {// ..."shortcuts": [{"message": "onMenuClick","win": "ctrl+z","mac": "cmd+z"}]}
}

我们在contributions中,新增一个shortcuts字段,

  • win/mac:绑定快捷键,可以在不同平台绑定不同的快捷键。

  • message:触发的消息名字,和菜单绑定消息一样。

这里我直接绑定了菜单的消息,当然,你也可以重新绑定新的消息,具体参考上节教程。

2. 编辑器中测试下

回到编辑器中,和之前一样,我们需要在扩展面板重启启用下插件(必要情况下,可能得重启下编辑器)。

同时我们会发现编辑器菜单上,多了快捷键信息。

我们在编辑器中,按下快捷键cmd/ctrl+z,和上节教程中点击菜单效果一样,会在控制台打印hello-world

可以看到绑定快捷键非常简单,整个消息机制还是非常灵活的。

在实际的开发过程中,理论上快捷键应该是更好地去服务一些高频常用的功能,如果绑定大量的快捷键反而会适得其反,所以快捷键尽量不要滥用。

消息机制详解

不难发现,要想玩转creator 3d插件,就必须要理解messages!!!

我们梳理下之前的代码:

  • package.json:描述插件,包括名字、作者、版本、菜单、快捷键、消息等

{"name": "hello-world","version": "1.0.0","author": "xu_yanfeng","main": "./main.js","description": "creator3d插件","contributions": {"menu": [{"message": "onMenuClick","path": "插件","label": "自定义菜单"}],"shortcuts": [{"message": "onMenuClick","win": "ctrl+z","mac": "cmd+z"}],"messages": {"onMenuClick": {"methods": ["log"]}}}
}
  • main.js:插件的逻辑,消息的具体实现是写在这里面

exports.methods = {log () {console.log('hello-world')}
}

我们再次梳理下整个流程,加深下印象:

  • 当我们点击菜单时,会触发设置的onMenuClick消息,然后onMenuClick消息会执行具体对应方法log

  • 当我们按下快捷键时,会触发设置的onMenuClick消息,然后onMenuClick消息会执行具体对应方法log

我顺便整理了一张图,从图中,能够更加形象的感知之间的关系:

我们可以看到,利用消息机制,插件做到了设计上的完全解耦,非常的灵活,但同时也增加了理解难度,编写时也更叫容易犯错,有得必有失嘛!

悄悄告诉大家,Creator 3D 编辑器本身也在使用这套消息机制,并得到了充分的验证,这也充分说明这套消息机制,是完全可以胜任并满足比较复杂的插件需求,不过在易用性,还有待提高。

至此,如果你要编写的插件如果没有 UI 面板交互,基本上只需要掌握到本节的知识即可。在后续教程中,将会重点介绍插件 UI 面板相关的开发教程喔。


感谢原文作者许彦峰,也希望能有更多的童鞋分享关于编辑器插件开发资料喔。

本系列教程持续更新中,请大家保持关注,也欢迎各位开发者点击【阅读原文】,查看一手更新,与作者进行交流学习!

Cocos Creator 3D 插件教程(一):看你骨骼惊奇,我带你上车!相关推荐

  1. 少年,我看你骨骼惊奇,必是练武奇才,将来维护宇宙正义

    亲,我看你骨骼惊奇,必是练武奇才, 将来维护宇宙正义与和平的重任就交给你了! 我这有失传已久的武林秘籍,看在咱们有缘, 只卖你五百块钱一本,买两本的话给你打99折, 一次性购买五本以上的话包邮喔亲! ...

  2. cocos creator 3d 3.0《懒猫跑酷》 实战开发教程

    文章目录 01搭建开发环境hello world 02 导入3D资源,搭建游戏场景 03 控制猫移动 04生成无缝地图 05生成障碍物和鱼 06 碰撞检测+动画编辑器 07 UI模块和UI适配(位图字 ...

  3. 022 - cocos creator 3D

    #cocos creator 3D warning 报错:"project:///assets/main.js,将https中的export注视掉重试一遍 知识点 scrollview组件添 ...

  4. Cocos Creator游戏开发教程 学习笔记

    学完提问几个问题吧: position的锚点位置数值原点在哪里? 因为position是相对坐标,所以原点是父节点的锚点 .所以Canvas下面的直属节点原点就是世界坐标系的原点Canvas的锚点. ...

  5. 麒麟子Cocos Creator 3D研究笔记十一:实用Shader之单张纹理实现武器动态发光

    零.别看广告,看疗效 虽然标题叫武器发光,其实它还能实现魔法护盾.动态光柱等效果.别说话,看图! 阿子最近沉迷于学英语和写代码,可HIGH了. 一看时间,竟然已经十天没发稿了. 但这不能怪阿子,要怪就 ...

  6. Cocos Creator 3D 粒子系统初战,不要钱的酷炫火焰拿走不谢!

    cocoscreator3.0终于上线了我们看看牛逼的特效 引擎下载地址:https://www.cocos.com/creator 先展示一下最终效果,然后再说废话 你听说过5毛钱特效吗? 我是个电 ...

  7. Cocos Creator 3D v1.0.2 正式发布,新增小游戏平台支持

    ​Hi,各位开发者,Cocos Creator 3D 为大家带来翘首以待的新平台和新功能支持,v1.0.2 已正式发布,欢迎大家移步官网下载使用! 升级之前请根据项目情况进行必要的技术评估和版本备份噢 ...

  8. 长远发展java还是cocos_聊聊 Cocos Creator 3D 的未来

    ​Hi,各位开发者,很高兴跟大家见面.在我们发布了 Cocos Creator 3D 之后,得到了许多积极的反馈和建议,在此真诚地感谢大家的支持! 从去年十月份 Cocos Creator 3D 诞生 ...

  9. 【更新至 11P】Cocos Creator 3D 官方中文视频教程

    为了帮助各位开发者更快上手 Cocos Creator 3D 的使用,开发出好玩优质的 3D 游戏作品, Cocos Creator 3D 引擎开发工程师放空结合 3D 休闲小游戏案例<快上车 ...

最新文章

  1. java 基础知识三 java变量
  2. 如何在树莓派上进行python编程_设置并使用树莓派进行Python和C语言编程 (下)
  3. spring和CXF集成来实现webservices
  4. python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析
  5. Servlet的学习之web路径问题
  6. Java转C#的最佳工具
  7. itext html 转换pdf后 字体加粗,HTML转PDF字体的坑搞了半天
  8. 免费视频文件生成视频二维码的方式详解
  9. python微信api_微信公众平台 Python 开发包文档
  10. 初见Laravel框架
  11. transformer中的位置嵌入
  12. 物联网技术可以给养老院带来哪些变化
  13. EFR32BG22 的三种电源设计
  14. Leetcode5238 找出给定方程的正整数解
  15. 自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~
  16. D. Ela and the Wiring Wizard floyd/思维
  17. 国际顶级的摩托车越野锦标赛落户上海
  18. java下载文件,返回文件流
  19. WKT创建shapefile、shapefile输出WKT
  20. Windows使用VMware 安装macOS虚拟机

热门文章

  1. Sqoop实践——原始数据库到大数据时代必备神器
  2. 拼音反查(转自大富翁)
  3. 公众号视频图片无缝连接
  4. FM1702sl终于调通小结
  5. 10项支持措施!武汉东湖新技术开发区打造中部地区风投创投中心奖励补贴政策解读
  6. 【AList】网盘聚合神器,打造灵活的私人云存储
  7. python报时功能_python3多线程实现一个语音报时,定时关机功能的应用
  8. 关于Redis 二进制内容的 可视化尝试
  9. 红米note5linux刷机包_红米Note5线刷刷机教程_红米Note5官方固件rom原版刷机包
  10. 详解HashMap的put方法