代码生成与维护
为项目结构体、类与枚举生成可在 Inspector 中使用的 GameEvent 包装类,并在类型变化后清理过时文件
面向添加自定义事件类型、又不想手写样板代码的开发者为要在 Inspector 中分配的自定义参数或 Sender + Args 组合生成具体事件类,Unity 编译后即可创建事件资产,并绑定对应类型的 UnityEvent 回调
访问工具
这些实用工具位于**游戏事件系统**中,您可以通过以下方法访问:
从系统仪表板:
游戏事件系统窗口 → 点击"Generate/Clean Game Event Code"或"Clean All Game Event Code"

架构
在使用工具之前,理解代码的位置很重要
系统严格分离核心逻辑和用户数据,以确保您可以在不丢失生成文件的情况下升级插件
Assets/
└── 📁 TinyGiants/ # [项目根目录] 所有插件文件均收纳于此
└── 📁 GameEventSystem/ # [核心逻辑] 插件根目录
└── 📁 Data/ # [用户数据] 您生成内容的圣地
└── 📁 CodeGen/ # 💾 自动生成的C#类
├── 📁 Events/ # 事件类
│ └── 📁 Basic/ # 🛡️ 基本类型(必需的系统文件)
└── 📁 Components/ # 桥接组件(Raiser / Receiver)
└── 📁 Basic/ # 🛡️ 基本类型(必需的系统文件)
您可以参考前面的章节**项目结构**以详细了解整个项目目录的结构
TinyGiants/GameEventSystem/Data/CodeGen/Events/Basic 和 Data/CodeGen/Components/Basic 文件夹包含基本系统类型(Int、Float、Bool、String等)
永远不要手动删除或修改此文件夹中的文件
如果您不小心删除了Basic文件夹,或者系统报告缺少基本类型(如Int32GameEvent),您可以自行修复环境
- 打开游戏事件系统(
Tools > TinyGiants > GES > Game Event System) - 点击窗口顶部的Initialize Event System按钮
- 系统将:
- 重新创建目录结构
- 重新生成所有缺失的基本类型代码
理解生成的代码
当您为某个类型(例如,int或自定义的DamageInfo结构体)生成代码时,工具会创建一个包含两个关键部分的文件:
- 事件类:一个具体的包装器(例如,Int32GameEvent),继承自
GameEvent<T> - 绑定字段:
GameEventManager的部分类扩展,添加了UnityEvent<T>字段,允许Inspector通过反射绑定监听器
示例:基本类型(Int32)
// =============================================================
// 基本游戏事件 - 自动生成
// =============================================================
using UnityEngine;
using UnityEngine.Events;
namespace TinyGiants.GameEventSystem.Runtime
{
// 1. ScriptableObject类
public class Int32GameEvent : GameEvent<int> { }
// 2. Inspector绑定
public partial class GameEventManager
{
public partial class EventBinding
{
[HideInInspector]
public UnityEvent<int> Int32GameEventAction;
}
}
}
示例:自定义Sender类型
对于同时携带Sender和Arguments的事件:
// =============================================================
// 自定义SENDER游戏事件 - 自动生成
// =============================================================
using UnityEngine;
using UnityEngine.Events;
namespace TinyGiants.GameEventSystem.Runtime
{
// 1. ScriptableObject类
public class GameObjectDamageInfoGameEvent : GameEvent<UnityEngine.GameObject, DamageInfo> { }
// 2. Inspector绑定
public partial class GameEventManager
{
public partial class EventBinding
{
[HideInInspector]
public UnityEvent<UnityEngine.GameObject, DamageInfo> GameObjectDamageInfoGameEventAction;
}
}
}
代码生成器工具
游戏事件代码生成器具有选项卡界面,允许您在简单的单参数事件和复杂的sender-argument事件之间切换
在任一选项卡中,把多个类型组合加入队列后即可一次生成
- 单参数
- 带Sender

对于携带单个数据有效载荷的事件(例如,SingleGameEvent或MyClassGameEvent),使用此模式
- 快速添加:使用下拉菜单快速添加标准C#类型(Double、Long、Vector3等)
- 搜索自定义类型:在项目中键入任何类、结构体或枚举的名称
- 队列系统:点击Add将类型移动到"Selected Queue"
- 批量生成:点击绿色的**Generate Code(s)**按钮同时为所有排队的类型创建文件

对于需要知道谁触发了事件以及发生了什么的事件(例如,Player发送了DamageInfo),使用此模式
- 选择Sender类型:通常是
GameObject或特定脚本(例如,PlayerController) - 选择参数类型:有效载荷数据(例如,
DamageInfo) - 添加对:创建特定组合(例如,
GameObject→DamageInfo)并将其添加到队列 - 批量生成:一次操作生成所有定义的对
点击"Generate"后,Unity将触发脚本重新编译
编译完成后,新的事件类型将立即在创建资产菜单和事件编辑器中可用
代码清理工具
随着项目的发展,您可能会删除旧的结构体或重构代码,留下未使用的GameEvent类
代码清理器镜像生成器的界面,允许您安全地过滤和批量删除过时的文件
它仅针对用户生成的文件(Basic 文件夹之外的内容)
它永远不会显示或删除 Basic 文件夹中的文件,从而保护系统完整性
- 单参数
- 带Sender

列出所有用于GameEvent<T>的自定义生成文件
- 搜索与过滤:按类型名称查找文件(例如,搜索"Damage"将找到
DamageInfoGameEvent.cs) - 全选/清除:快速管理大型列表
- 多选:勾选单个文件或使用"Select All"
- 删除:红色的Delete All Selected Files按钮删除所有选中项的
.cs文件及其.meta文件

列出所有用于GameEvent<Sender, Args>的自定义生成文件
- 复杂过滤:您可以按Sender名称或参数名称搜索
- 文件检查:点击任何文件旁边的对象图标📦,在删除前在项目窗口中ping/高亮显示脚本(用于仔细检查引用)
- 批量删除:一键安全删除多个Sender-Event定义
全部清理(重置)
Clean All Game Event Code按钮是"核选项"
- 操作:删除
TinyGiants/GameEventSystem/Data/CodeGen/Events/和Data/CodeGen/Components/中的所有自定义文件(不包括Basic文件夹) - 保留:它保留Basic文件夹
- 使用场景:当您想要对自定义事件执行硬重置时,或者如果您重构了大量类型并且只想重新生成当前需要的内容时,使用此选项