易商讯
当前位置: 首页 » 网络 » 游戏 » 正文

如何从0到1制作一个 Cocos Creator 插件?超详

放大字体  缩小字体 发布日期:2023-02-07 15:35:56
导读

如何从0到1制作一个 Cocos Creator 插件?超详细开发指南来了!各种插件在开发过程中总是必不可少的。Cocos Store 它提供了很多插件资源,但有时我们需要自己制作一些插件。这一次,开发者 muzzik(马赛克)将分享 v3.x 插件开发过程和经验,一起做插件吧!Cocos Store 资源商店首先,为什么要开发插件?任何重复的机械劳动

如何从0到1制作一个 Cocos Creator 插件?超详细开发指南来了!游戏游戏开发制作(如何从0到1制作一款 Cocos Creator 插件?超详细开发指南来了!)

各种插件在开发过程中总是必不可少的。Cocos Store 它提供了很多插件资源,但有时我们需要自己制作一些插件。这一次,开发者 muzzik(马赛克)将分享 v3.x 插件开发过程和经验,一起做插件吧!

游戏游戏开发制作(如何从0到1制作一款 Cocos Creator 插件?超详细开发指南来了!)





Cocos Store 资源商店



首先,为什么要开发插件?


任何重复的机械劳动都是毫无意义的,所有的机械劳动都可以自动化,插件可以帮助我们实现自动化。


插件能给我们带来什么?


首先是时间。解决自动化问题最大的好处当然是节省了额外的手动操作时间。俗话说,很难买到每一寸时间。节省时间是插件的最大价值。


第二是收入。我们可以向开发的插件发布 Cocos 在给他人带来便利的过程中,商店也能给自己带来额外的好处。


第三是生态。各种插件涵盖了开发的各个方面,这将有助于更多的开发人员。我们可以给每个插件 Cocos 生态加砖加瓦。


第四是技术。插件开发所需的技术包括但不限于 HTML、CSS、NodeJs、Vue,在开发插件的同时,还可以帮助我们扩大技术范围,提高个人竞争力。


这一次,借用这篇文章,我将从入门、高级、深入三个部分与大家分享开发 Cocos Creator 3.x 在实际开发中积累的插件流程和经验,期待更多的开发者加入开发插件的行列!





PS. 由于篇幅有限,微信官方账号只显示文本部分,在论坛专贴中,我附上了关键内容的参考和扩展链接,如果你想成为一个深入了解的朋友,你可以直接去论坛阅读:






入门







1、创建插件


我们可以打开顶部菜单栏 扩展/创建扩展 打开插件创建面板。




插件放在哪里?打开顶部菜单栏 扩展/扩展管理器 找到我们的插件,点击 Open Folder 打开我们的插件根目录文件夹。




因为我们的插件一开始可能会依赖部分 npm 因此,模块需要初始化:

cd 插件根目录

npm i





2、package.json 简述


package.json 它是插件根目录中的一份文件,它包含了大量的信息,相当于插件的身份证,其中三个最重要的配置是:

main:关系到插件能否正常启动。

panels:与面板能否正常显示有关。

contributions:插件的大部分配置都在这里。





3、插件多语言


在开发过程中,我们经常使用多语言。如何实现插件多语言?事实上,这取决于一个放在插件根目录中 i18n 文件夹为了实现,存储在文件中的文件名称是语言代码,内容是导出对象。





插件多语言的基本使用方法是:

使用脚本:let str = Editor.I18n.t(‘first-panel.open_panel’);常用于动态显示内容。

使用HTML:<ui-label value=“i18n:first-panel.open_panel”>;常用于面板。

JSON 使用中使用:“description”: “i18n:first-panel.description”;在 package.json 中使用。





4、通过消息启动插件面板


首先,我们需要注册一个菜单项才能启动插件面板 package.jsoncontributions.menu 在里面,写一个包含 pathlabelmessage 属性数据。





这些内容代表了什么?

菜单路径:path + label = 扩展/demo_part1/默认面板

点击菜单触发的消息:message







监听消息


我们可以在 package.json 文件中的 contributions.messages 写入我们监控的信息名和触发的方法数组。




我们所有的事件都在 messages 里面注册,这里的 open-panel这是我们注册的事件,open_panel 触发方法名,因为没有指定面板名,所以触发方法名 main 接下来,让我们来看看内部方法。 open_panel 该方法做了什么?







看看回调做了什么


open_panel 我们调用了内部 Editor.Panel.open,这就是打开面板的方法。Editor.Panel.open 参数为“扩展名” | 扩展名.面板名”。





到这里点击菜单后,打开我们的插件面板。




5、编写插件面板的内容


首先是面板的一些基本属性,我们在 package.json 内的 contributions.panels 中定义:

title:面板标题。

typedockable(可停靠) | simple(不能停靠)。

main:面板入口脚本文件夹,文件名称默认 index.js。

size:面板大小信息。



如何显示面板的内容控制?index.js 我们在文件中导出的对象,template 则为 html 内容,style 则为 css 内容。这篇文章涉及的内容比较深,可以去论坛专题文章查阅相关参考链接,深入了解。






6、消息系统


我们前面说过如何监控一条信息。让我们看看如何发送信息。




发送消息有三个接口,包括发送、请求和广播。详见官方文件。







查看默认定义的消息


打开菜单 开发者/消息列表 即可查看。









调试消息


新闻管理器中的新闻并不是编辑器中的所有新闻,那么我们如何知道我们的操作触发了什么新闻呢?使用新闻调试工具和菜单 开发者/新闻调试工具:

点击播放按钮(扫帚图标旁边的按钮)开始操作。

点击操作后的暂停按钮。



这样,我们就可以看到这个操作触发的所有新闻,包括新闻的参数。




7、场景脚本


简单地说,场景脚本是与编辑器中脚本运行的环境相同的脚本。当我们需要调用引擎接口时,我们需要使用它,如加载资源、获取节点等。







场景脚本在 package.json 中的定义









场景脚本结构


load:加载回调。

unload:卸载回调。

methods:场景脚本事件函数存储位置。








与场景脚本通信


我们可以通过消息系统默认定义的消息进行通信:

name:扩展名。

method:触发事件函数名。

args:事件参数。





8、配置系统


简单地说,配置系统是编辑环境下的文件读写工具。




我们可以在脚本中使用,没有任何前提条件,但需要注意的是,我们在写文件之前获得的第一个值必须是 undefined。可以通过 package.json 配置默认值。






9、插件编译



使用 ts 写插件自然需要编译成 js 才能使用。如何编译 ts 脚本呢?市场上有很多第三方编译器。在这里,我们选择通过 tsc(Typescript 语言自带编译器)进行编译。


我们可以在命令行输入以下命令编译脚本:

tsc -b [tsconfig 所在目录]:单次编译。

tsc -w [tsconfig 所在目录]:监听编译(在 ts 文件保存并更改后,将自动编译)。



脚本命令也可以配置,在 vscode 内可以通过 ctrl + shift + p 搜索和执行。




10、发布插件


插件开发完成后,我们可以发布到 Cocos 商店。发布前,建议您仔细阅读商店的插件资源发布规范:




确认后登录 Cocos 开发者中心




点击商店 -> 卖家中心 -> 发布新资源。填写后,等待两三天的审核时间。如有任何问题,官方人员将与您联系。




进阶







1、了解主过程和渲染过程


当你接触插件开发时,你可能听说过主要的过程和渲染过程,但你不太了解它们,那么它们是什么呢?

主进程:package.jsonmain 脚本运行过程的属性(插件入口脚本)

渲染进程:package.jsoncontributions.panelsmain 脚本运行过程的属性(插件面板入口脚本)







如何交互不同的过程


通过消息系统:最简单的方法。

通过 websocket:一般没有人这样做。







使用过程中的误解


数据不是共享的,而是单独的。这里经常犯的错误是认为他们使用相同的数据,实际上是两个单独的数据,不同过程之间的数据不会相互干扰。

不要把昂贵的计算逻辑放在主过程中。会造成放置在主过程中 Creator 最好将编辑器界面卡住,放在插件渲染过程中或单独打开个子过程中。




2、使用 element-plus


element-plus 是一个 web 前端常用的 UI 组件库,Cocos Creator 虽然编辑器也提供了一些插件 UI 组件,但可能不满足我们的需求,此时可以使用 element-plus






3、html 和 css 调试技巧


开发插件时需要经常修改 htmlcss,不想每次都重新加载插件怎么办?


点击插件面板,然后按下插件面板 ctrl + shift + i 打开开发人员工具,可以直接编辑 htmlcss 效果是实时生效的,我们可以修改到预期的效果,然后将其移动到插件源代码。






4、扩展 inspector



inspector 简单来说就是属性检查器面板组件显示的内容。怎么定义 inspector?只需要在 package.json 中的 contributions 中声明即可。









与组件数据交互


inspector 自定义了我们的组件属性面板显示,那么如何与组件数据交互呢?有两种方法:

场景脚本。可以通过场景脚本 getScene 拿到场景根节点,找到我们的组件进行数据访问和修改。

消息系统。建议使用编辑器。我们不知道新闻内容可以通过新闻调试器获得。编辑器将依赖这些信息,如取消操作。





5、插件公共代码库


在插件开发过程中,我们可能会遇到几个插件使用相同的代码。此时,如果我们想只保留一个公共代码,我们可以在插件根目录中 tsconfig.include 添加我们的公共代码库路径。





但有一个问题是,插件编译后的路径结构与以前不一致。如何解决这个问题?我在这里写了一个小工具:插件编译器,可自动修改 package.json 自动复制依赖于引用公共代码库引起的路径不一致性 npm 包到输出目录,输出 zip





下载和使用插件编译器:






深入







1、使用 Creator 制作插件 UI




看起来很复杂,实现起来并不难。插件面板也是一个 web 界面,而 web 界面可以同时嵌入, Cocos Creator 也可以输出 web 包,所以事情很简单。




通过 iframe 嵌入指定网站链接的标签可以实现插件面板显示 Creator 界面:

调试时:嵌入预览网站。

发布时:本地开个 http-server,指向编译后的 web 包装路径即可。





2、调试主流程代码


在开发过程中,可能会出现主流程报错但无法调试的情况。那么我们应该如何调试主流程呢?


首先设置 Cocos Dashboard 启动选项,path 后者是项目根目录:


然后打开 chrome://inspect/#devices 配置:


点击 Discover network targets 右侧的 configure 添加 localhost:5858

最后,打开相应的项目,target 下面会有一个新项目,点击蓝色 inspect,这时,我们进入了主进程开发人员工具,可以使用 ctrl + p 搜索自己的插件 main.js 进行调试:





3、代码加密的方法


服务器中的逻辑。主要代码放在服务器上,插件面板只负责显示,即使代码被偷也没关系。

使用其它语言。使用 C、C++ 编译为 wasm,核心代码的破解基本结束。

混淆。这种方法,只防君子不防恶棍。



以上是本次分享的全部内容,希望对大家有所帮助!最后推荐几款我发布在上面 Cocos Store 感兴趣的小伙伴可以下载取用上面的插件和源码。





SDF 纹理生成工具:




根据节点名生成节点引用代码插件:




扩展编辑器菜单(使用插件):




点击文末【阅读原文】去论坛专贴,查看有关情况 Cocos Creator 如果您有任何问题,请在帖子中与我沟通!


游戏游戏开发制作(如何从0到1制作一款 Cocos Creator 插件?超详细开发指南来了!)

声明:易商讯尊重创作版权。本文信息搜集、整理自互联网,若有来源标记错误或侵犯您的合法权益,请联系我们。我们将及时纠正并删除相关讯息,非常感谢!

关键词: 插件 指南 游戏
 
(文/小编)
免责声明
• 
本文如何从0到1制作一个 Cocos Creator 插件?超详链接:http://www.esxun.cn/internet/88619.html 。本文仅代表作者个人观点,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们,我们将在24小时内处理完毕。如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
 

Copyright © www.esxun.cn 易商讯ALL Right Reserved


冀ICP备2023038169号-3