首页
/ GDevelop 5 扩展开发完全指南

GDevelop 5 扩展开发完全指南

2025-07-06 01:42:53作者:鲍丁臣Ursa

前言

GDevelop 5 作为一款开源的跨平台游戏引擎,其核心设计理念之一就是通过扩展系统实现功能的模块化。本文将深入解析如何在 GDevelop 5 中开发扩展,帮助开发者扩展引擎功能。

扩展系统架构概述

GDevelop 的扩展系统采用声明与实现分离的设计:

  1. 声明部分:在 JsExtension.js 文件中定义扩展的元信息
  2. 实现部分:使用 TypeScript 编写运行时逻辑代码

这种架构使得功能扩展既灵活又易于维护。

开发环境搭建

前置要求

  • Git 版本控制工具
  • Node.js 运行环境
  • Yarn 包管理器(可选)

安装步骤

  1. 克隆项目仓库
  2. 进入 newIDE/app 目录
  3. 执行依赖安装命令

扩展开发流程

1. 启动开发环境

运行 GDevelop 的 Electron 版本,开发者控制台会显示扩展加载信息。

2. 修改扩展文件

  • 编辑 Extensions 目录下的扩展文件
  • 主要修改两类文件:
    • JsExtension.js:扩展声明文件
    • *.ts 文件:运行时实现文件

3. 验证修改

  • 修改声明文件后需重新加载 GDevelop
  • 修改运行时文件后需重新启动预览

核心功能实现指南

1. 事件函数开发

extensionnametools.ts 文件中实现:

  • 使用 gdjs.RuntimeScene 类处理场景逻辑
  • 异步函数需返回 AsyncTask 实例

2. 行为(Behavior)开发

继承 gdjs.RuntimeBehavior 类:

  • 实现关键生命周期方法:
    • constructor:初始化
    • onDeActivate:行为停用时调用
    • doStepPreEvents/doStepPostEvents:每帧逻辑

3. 对象(Object)开发

继承 gdjs.RuntimeObject 类:

  • 核心方法:
    • constructor:初始化
    • update:每帧更新
  • 需单独实现 PixiJS 渲染器

4. 特效(Effect)开发

基于 PixiJS 过滤器:

  • 实现滤镜创建和更新逻辑
  • 通过 gdjs.PixiFiltersTools.registerFilterCreator 注册

扩展声明详解

1. 基础信息声明

使用 extension.setExtensionInformation 方法设置:

  • 扩展名称
  • 完整名称
  • 描述信息
  • 作者信息等

2. 动作/条件/表达式声明

  • 使用 addAction/addCondition/addExpression 方法
  • 通过 addParameter 添加参数
  • 使用 setFunctionNamesetIncludeFile 关联实现

3. 行为声明

  • 使用 addBehavior 方法
  • 实现 BehaviorJsImplementation 接口
  • 可选实现共享数据 BehaviorSharedDataJsImplementation

4. 对象声明

  • 使用 addObject 方法
  • 实现 ObjectJsImplementation 接口
  • 处理对象属性和实例属性

高级功能实现

1. 属性系统

  • 使用 registerProperty 声明全局配置属性
  • 运行时通过 getExtensionProperty 获取

2. 外部依赖

  • 使用 addDependency 声明 npm 或 Cordova 依赖
  • 支持版本控制和额外设置

3. 编辑器集成

  • 实现 registerEditorConfigurations 配置对象编辑器
  • 实现 registerInstanceRenderers 配置场景渲染

创建新扩展

  1. 在 Extensions 目录创建新文件夹
  2. 创建 JsExtension.js 文件并配置基础信息
  3. 创建实现文件(如 yourtool.ts)
  4. 通过 setIncludeFile 关联实现文件

开发建议

  1. 遵循 TypeScript 编码规范
  2. 注意性能优化
  3. 充分利用现有扩展作为参考
  4. 开发过程中持续验证功能

结语

通过 GDevelop 5 的扩展系统,开发者可以灵活地扩展引擎功能。本文详细介绍了从环境搭建到功能实现的完整流程,希望能帮助开发者更好地利用这一强大特性。

建议开发过程中多参考官方示例扩展,并保持对控制台错误的关注,这将大大提高开发效率和质量。