

🚀 告别乱麻:用可视化逻辑重写您的游戏未来
Game Event System(GES) 是一款为同时重视视觉清晰度与运行性能的 Unity 开发者打造的生产力工具。它将可视化节点图与直接、类型安全的 C# API 结合,为项目建立一套清晰、可搜索、可扩展的事件架构
您可以通过 Inspector、无代码组件或 C# 创建和触发事件,将大型项目拆分为多个事件数据库,并在运行时动态注册、查询、加载和释放内容
❤️ 您的项目值得拥有专业、清晰且可维护的事件架构
🔥 面向移动端与 AOT 平台:支持 Mono、IL2CPP,以及关闭 Domain Reload 的 Enter Play Mode Options
🇨🇳 国内通道
🛒 Unity 中国商店 | 🎥 B站视频 | 📘 技术文档
🌐 全球社区
🛒 Global AssetStore | 💬 Discord 社区 | 🎥 YouTube 频道 | 🎮 Unity Forum | ✉️ 邮件支持
🛠️ 核心特性:让事件架构清晰可控
✨ 资源驱动的事件架构 事件以 ScriptableObject 子资源的形式存储在 GameEventDatabase 中。持久事件 GUID 取代魔法字符串;正常重命名资源或移动文件夹时,Unity 资源引用能够保持有效。项目还可以按 Core、Combat、UI、DLC 等模块拆分多个数据库
🕸️ 可视化流向编排 在可缩放的 FlowGraph 中组合并行触发器、阻塞式顺序链和混合执行流程。节点支持分组、连接验证、撤销/重做,以及 Play Mode 执行路径高亮,让事件关系真正可见
⚡ 面向 IL2CPP 的 AOT-safe 运行时 内置事件和生成事件通过强类型 ActionEntry 直接调用,不需要在运行时生成 Expression Tree 委托。FlowGraph 事件派发使用同一套 AOT-safe 类型链路,适用于移动端、主机、桌面和 WebGL 项目
🧠 可视化逻辑与 AOT 条件烘焙 无需编写代码即可构建嵌套 AND/OR 条件组,并读取发送者、事件参数、字段或属性进行动态比较。AOT Condition Baker 会生成运行时求值注册表,在构建前检查缺失或过期的条件,并准确报告需要重新烘焙的资源和字段
📦 可选 Addressables 集成 按 Address 或 GUID 异步加载 GameEventDatabase,共享同一数据库的并发请求,并在加载后自动完成运行时注册。租约机制负责数据库释放,GUID 冲突检查则阻止重复事件进入当前运行环境。Addressables 不是 GES Core 的强制依赖
🎧 专业级事件绑定与无代码组件 通过 Inspector 配置 UnityEvent 回调、优先级、条件监听器和跨场景持久监听器。GameEventRaiser 与 GameEventReceiver 可以直接连接 UI、动画、音频、VFX、物理和玩法逻辑,无需为简单流程额外编写 C#
⏳ 精细的流程控制 原生支持 Delay、Loop、重复次数、Coroutine/Async 等待和条件闸门。延迟与重复事件提供可取消的执行句柄,便于管理尚未完成的运行时逻辑
📜 自动代码生成流水线 支持无参数事件、单参数事件和发送者事件:
- GameEvent
- GameEvent<T>
- GameEvent<TSender, TArgs>
32 种常用 C# 与 Unity 类型可以直接使用。对于自定义参数和发送者组合,CodeGen 会生成具体事件类、ActionEntry 以及配套的 Raiser/Receiver 组件,解决 Unity 的泛型序列化限制
🔎 运行时数据库与查询 API 数据库可以在运行时注册、注销、启用或停用。MonoBehaviour、纯 C# 服务、存档系统、插件桥接和动态内容模块都可以按 GUID、名称、分类或运行时类型查找事件,无需依赖序列化的场景引用
🛡️ 完整的编辑器与调试工具链 内置集中式事件管理器、模糊搜索、批量创建、FlowGraph 编辑器、当前场景引用查找器、数据库健康检查、孤立子资源清理、CodeGen 管理和 Runtime Monitor
Runtime Monitor 可以查看事件记录、监听器数量、执行耗时、GC 分配以及当前 Trigger/Chain 执行层级,帮助您定位隐藏依赖和运行顺序问题
💪 谁最需要 GES?
🎯 独立开发者 希望从项目早期建立清晰的事件边界,避免依赖关系随着内容增长逐渐失控
🏆 专业团队 需要一个集中、可搜索、可拆分并适合协作维护的事件数据库
🎨 技术美术与策划 希望通过 Inspector 和 FlowGraph 配置事件、条件与流程,同时保持类型安全
📱 移动端与 IL2CPP 项目 需要强类型事件派发、AOT 条件烘焙和构建前验证流程
📦 模块化与动态内容项目 需要通过多个数据库或 Addressables 管理关卡、DLC、活动和按需加载内容
📦 技术规格
- 架构基础:ScriptableObject 事件与 GameEventDatabase
- 事件形式:GameEvent、GameEvent<T>、GameEvent<TSender, TArgs>
- 内置参数类型:32 种常用 C# 与 Unity 类型
- 运行时派发:强类型 AOT-safe ActionEntry
- 条件系统:生成式求值注册表与构建前验证
- 脚本后端:Mono、IL2CPP
- 目标项目:桌面、移动端、主机、WebGL
- 动态内容:可选 Addressables 数据库加载
- Addressables 依赖:GES Core 不强制依赖
- 编辑器界面:基于 UI Toolkit 的窗口、Inspector 与 Property Drawer
- 播放模式:支持关闭 Domain Reload
- 跨场景监听:支持持久监听器
- 数据库能力:多数据库、运行时注册、动态查询与健康检查
🏆 开发者寄语
“我开发 GES,是因为我厌倦了追查那些不可见的代码依赖。我需要一套能够看清事件关系,同时保留直接、类型安全 C# 控制的架构
GES 将这套设计扩展到了 IL2CPP、AOT 条件执行和动态数据库加载。我也在自己的游戏开发中持续使用和维护它
期待看到您用 GES 构建出的项目,也欢迎把真实需求和使用反馈带到 TinyGiants 社区”
— Tino, TinyGiants



