(1)插件开发之路之一 《“_图纸_”、“_笔_”、“_匠人_”》

【本文参与征文活动】

【前言】

人类的精力和寿命都是有限的,为了节省大量重复劳动以及实现以往难以实现的事,人类发明了大量的工具。
对于爬山者来说,比起徒手攀岩更加高效率的方式是使用登山镐,
对于游戏开发者来说,插件就是帮助他们翻越困难达到更高成就的“登山镐”。
而登山镐的开发需要“图纸”、“”、“匠人”。

【游戏开发的突破口—游戏插件、所见即所得、教程】

开发游戏的艺术家们需要简单便捷的功能,降低开发难度,实现像ue4一样蓝图功能以及所见即所得的开发和调试功能,以及视频教程。

【游戏插件开发的突破口1—js弱语言没有智能提示,所以写声明文件用ts强语言取而代之】

笔者发现国内引擎的插件商店的插件数量远远不足国外的多,
这证明在开发插件的人数不算特别多,笔者查看了官方的文档发现以往的插件开发普遍使用javascript语言。
该语言是弱语言,在容易改变的同时失去了类型,像水一样装在任何一个瓶子里就会变成瓶子里的形状,
此时开发插件需要完全掌握官方的api或者在开发时一边开发一边查看api,这是对开发者很不友好的,
笔者花费了几乎所有业余的时间根据文档为官方人为写了一份声明文件,
学会了使用tsconfig以及tsc命令后,
笔者在开发中写的语言是ts,插件使用编译后的js。
感受到开发插件的难度有了明显降低。

【游戏插件开发的突破口2–gizmo开发不友好,所以封装了抽象类super-gizmo并免费开源】

gizmo是十分常见的辅助工具,在编辑器视图中使用svg渲染出诸如圆形、矩形、路径、直线等图像,
将组件或节点上的数据可视化展示在视图,方便编辑。
初次学习的时候是在官方的案例,发现官方案例有很多坐标转换的问题没有解决,
参考了大量的论坛后才发现原来是因为很多方法被写在了局部方法里,这么做的话虽然实现了效果,
但是却逐渐地将开发变成面向过程,几乎写在局部的方法都无法被复用,于是笔者对gizmo的行为进行了抽象后,

gizmo类的行为大概可以这么概括:

1.渲染(render)

渲染包括了清理 (clear) 和 绘画(draw )

2.交互

交互包括了触碰消息的注册和对触碰消息的处理。

笔者已将清理和触碰消息的注册的部分封装,开发者可以不再关心
开发者几乎只需要知道使用
“getTouch”开头的成员方法能够获取注册了点击事件的图形
形如“getCircle”的方法没有注册点击事件的图形
“getFitted”开头的方法获取适配相关的内容,如将节点坐标系的点转换到SVG坐标系
“touchStart”,“touchMoved”,“touchEnd”结尾的方法分别对应着点击开始、拖拽、点击结束。

开发者只需要定义一个类继承supergizmo
重写draw函数在里面绘制自己想要的图案,然后再对应的点击回调中处理交互即可

为了分离画面和代码, 照顾开发者的个性化需求,笔者还利用package中的profile动态生成配置面板,
设计人员如有扩展需求,只需要在对应位置添加字段,如color:{“newcolor”:“rgba(1,2,2,2)”}
并且在i18n文件夹中添加翻译 即可享用本地化存储,在gizmo类中声明该字段的属性后可直接使用该字段(注意不能有重复名称的字段)。
每次按下配置面板保存按钮会自动更新gizmo的样式。

该插件已经上架cocos商城链接

【结束语】

点击查看github源码
点击查看gitbook文档
图纸”、“笔”、都已备好,读者,成为”匠人“吧,

##【下期预告 所见即所得的动画插件】

7赞

可以啊,要不写个行为树把官方的顶掉?:eyes:

我估计是写行为树的叶子多一些:grinning:

点了商店那个链接没有

厉害了!!

你好,我试了一下是可以的,要不试试在cocos的扩展商店搜索super-gizmo

大家好啊,我把super-gizmo的文档写完了,源码也上传至github了,欢迎学习。

点击查看github源码
点击查看gitbook文档

以下两款插件的gizmo基于super-gizmo,开发不易,望大家多多支持。
多边形音效按钮
Tweener缓动插件

1赞