十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GDevelop 扩展开发完整指南:5分钟从零做出你的第一个自定义行为

GDevelop 扩展开发完整指南:5分钟从零做出你的第一个自定义行为 GDevelop 扩展开发完整指南5分钟从零做出你的第一个自定义行为【免费下载链接】GDevelop Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.项目地址: https://gitcode.com/GitHub_Trending/gd/GDevelopGDevelop 是一款开源跨平台游戏引擎让你不写代码也能做出 2D、3D 和多人游戏而它的扩展系统是功能可扩展的关键——往引擎里注入新的对象、行为和事件。看完你就能在本地跑起 GDevelop 编辑器看懂 GDevelop 扩展声明 运行时的两段式结构照着示例扩展的套路写出第一个自定义行为并直接在编辑器里看到效果。它到底能帮你干什么先解释一个词扩展Extension就是游戏里的功能包可以往游戏加一个对象、一种行为、一个特效或一组事件动作。没有平台跳跃行为这个扩展你要自己写碰撞、重力、跳跃手感每个项目都重写一遍有了它把行为拖到对象上角色立刻能跑能跳。没有自定义扩展你只能用引擎自带的玩法想法和现有功能对不上时只能妥协有了它你能把自己的逻辑写进引擎打包分享给任何人。只会在编辑器里点按钮你碰不到引擎内部读懂扩展源码你能看到每个行为背后就是一个 TypeScript 类逻辑逐帧可改。GDevelop 编辑器主界面正在编辑游戏关卡5分钟跑起来从克隆到看到效果先装好 Git 和 Node.js然后按这条时间线走拉取代码进入编辑器目录git clone https://gitcode.com/GitHub_Trending/gd/GDevelop cd GDevelop/newIDE/app安装依赖编辑器是个 React 应用首次安装稍慢npm install启动让编辑器跑在浏览器里npm start启动成功后浏览器会打开 GDevelop 编辑器开发者控制台打印Loaded x JS extensions.说明 Extensions/ 目录下的 JS 扩展都加载成功了。这就是你后面开发扩展的工作台。核心能力拆解从能跑到能改一个 GDevelop 扩展就是两份文件一份声明告诉编辑器你有什么一份运行时实现告诉引擎你具体怎么干。声明文件JsExtension.js 管长什么样它负责扩展的元信息名字、作者、属性列表以及在事件编辑器里露出的动作和条件。这是最小骨架外层module.exports包裹省略const extension new gd.PlatformExtension(); extension.setExtensionInformation(MyFirstExtension, _(我的第一个扩展), _(...), 你的名字, MIT); extension.addAction(SetSpeed, _(设置速度), _(设置移动速度), _(...), ) .addParameter(expression, _(速度)) .getCodeExtraInformation() .setFunctionName(gdjs.evtTools.myFirstExtension.setSpeed);到这里你已经能让事件编辑器里出现一个属于你的动作条目了只是它还没逻辑。完整可抄的作业在 示例扩展源码。运行时行为继承 gdjs.RuntimeBehavior 管每帧发生什么行为是挂在对象上的逻辑单元基类是gdjs.RuntimeBehavior定义在 GDJS 运行时gdjs.RuntimeBehavior里能找到所有生命周期钩子。最小骨架照示例扩展抄class MyBehaviorRuntime extends gdjs.RuntimeBehavior { constructor(instanceContainer, behaviorData, owner) { super(instanceContainer, behaviorData, owner); } doStepPreEvents(instanceContainer) { this.owner.setX(this.owner.getX() 5); } } gdjs.registerBehavior(MyFirstExtension::MyBehavior, MyBehaviorRuntime);到这里你已经能把这个行为挂到编辑器里任意对象上运行时doStepPreEvents会每帧执行一次registerBehavior那行负责让引擎认识它。一个带业务味的小场景碰到金币加 10 分需求一句话玩家对象碰到金币时分数变量加 10。涉及三块声明文件注册条件、运行时文件实现判定逻辑、事件编辑器把它们拼起来。关键 3 步在JsExtension.js里用addCondition声明一个碰到了金币条件用setFunctionName把它绑到一个工具函数上声明和实现就这样对上了。在对应的.ts文件里实现这个函数核心就一行碰撞判断gdjs.evtTools.myFirstExtension.coinTouched function(otherObject, coinObject) { return otherObject.overlapsObject(coinObject); };打开事件编辑器写上如果 [我的扩展碰到了金币]那么 [分数变量加 10]点运行预览。引擎的 watcher 会自动重新构建运行时控制台会打印GDJS Runtime update你不用手动跑构建改完即测。GDevelop 事件系统用于编写游戏逻辑踩坑速查表症状扩展没出现在编辑器里控制台没有Loaded x JS extensions.根因文件名没叫JsExtension.js或扩展目录没有直接放在仓库根目录的Extensions/下30秒修复核对文件名和目录层级再刷新编辑器。症状改了JsExtension.js保存后没生效根因声明文件的变更需要手动刷新才会被编辑器重新读取30秒修复在开发者控制台按 CtrlRMac 是 CmdR重载。症状行为 TS 代码改了预览里还是老逻辑根因预览用的是上一次构建的运行时30秒修复重新运行一次预览并确认控制台出现GDJS Runtime update。症状Linux 上报Error: watch ... ENOSPC根因系统 inotify 文件监视数量上限太低30秒修复终端执行sudo sysctl fs.inotify.max_user_watches524288。症状动作静默无效果也不报错根因addParameter声明的参数个数和函数实际形参对不上官方文档把这称作静默 bug30秒修复逐一对齐声明参数与函数签名再刷新。完整的分步教程在 扩展开发文档想抄作业也可以直接翻 PlatformBehavior、TweenBehavior 这些官方扩展的源码。能跑起编辑器你已经迈过了最难的门槛。下一步很具体Fork 一份仓库在Extensions/下照着 示例扩展 建一个自己的目录把doStepPreEvents里的 5改成 10在预览里亲眼看对象提速然后给它接上你自己的分数变量。用 GDevelop 引擎制作的游戏作品合集【免费下载链接】GDevelop Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.项目地址: https://gitcode.com/GitHub_Trending/gd/GDevelop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表