GES 集成
将 GCS 战斗事件发送到 GES,或通过 GES 事件触发 Behavior,保留 GCS 内部订阅
集成边界与双向通道
上图展示了 GCS 与 GES 的双向事件连接,已映射的 GCS 事件、Raise GES Event 与 Encounter Bootstrap 向 GES 发送通知,On GES Event 接收 GES 事件并触发 Behavior,可按所需时机选择内置事件或手动配置节点
完成事件同步后,47 个内置 GCS 事件会同时通知内部订阅者与对应的 GES 事件,未建立映射时,内部订阅仍正常工作
检测与安装
在同一 Unity 项目中安装 Game Event System,GCS 会检测 TinyGiants.GES.Runtime Assembly Definition,并为 Standalone、Android、iOS、WebGL 及当前 Build Target Group 同步 TG_GES_INSTALLED Scripting Define Symbol
安装并同步事件
- 导入 GES,项目已经安装时无需重复操作
- 等待 Unity 完成编译和 Domain Reload
- 检测器找到
TinyGiants.GES.Runtime,加上TG_GES_INSTALLED Raise GES Event和On GES Event两个节点就绪,Encounter Bootstrap 中也会显示Use GES Events- 打开 Game Card System 面板,在 GES Event Bridge 中点击 Initialize GES Events
- 等待事件类型生成与 Unity 编译,确认显示 47 / 47 Events Synced,已有映射需要修复时点击 Repair GES Events
移除 GES 后,检测器会清除对应 Define,GCS 随即退回内部事件通道
从 Encounter Bootstrap 触发事件
选择场景中的 GameCardEncounterBootstrap 并展开 Events,默认通过 On Bootstrap UnityEvent 通知战斗启动,启用 Use GES Events 后,改用 On Bootstrap Events 列表
遭遇战启动后,Bootstrap 按列表顺序触发 GES 事件,两种模式互斥,GES 模式不调用 UnityEvent,UnityEvent 模式不触发 GES 列表
从 GCS 触发 GES 事件
从 Add Node 菜单的 Event 分类添加 Raise GES Event,在 GES Event 字段中选择事件,选择器按数据库分组,并自动填入 Argument 与 Sender 类型
节点支持无参数、单 Argument 与 Sender Argument 事件,通过 Picker 和 Source 字段指定固定值、Unity Object、结构化数据或当前执行上下文
字段、动态选项、上下文来源与 Primitive 类型限制见 Raise GES Event 节点手册
用 GES 事件启动 Behavior
从 Entry 分类添加 On GES Event,在节点上选择要监听的事件,战斗期间该事件触发后,GCS 执行连接的 Behavior
GCS 在战斗开始时绑定已激活的 GES 事件,中途激活的事件从下一场战斗生效,已绑定事件触发时,会执行以下对象中匹配的入口
-
当前位于抽牌堆、手牌、弃牌堆或消耗堆的卡牌
-
存活单位身上的状态
-
存活敌人的 Behavior
入口支持无参数、单 Argument 与 Sender Argument 事件,GES Payload 不会传入 FlowGraph,Behavior 从当前战斗状态读取数据
On GES Event 未选择事件时,FlowGraph 校验器会报告空引用
没有 GES 时的行为
未安装 GES 时,GCS 可正常编译运行,内置事件使用内部通道,执行 Raise GES Event 时忽略调用,并在 Console 输出警告
[GCSEventChannelInternal] RaiseGesEvent('...') ignored: GES integration not installed.
包含该节点的卡牌仍可在未安装 GES 的项目中使用,Console 警告用于定位未执行的跨系统通知
保持系统职责边界
-
通过 GES 通知成就、任务、局外成长、数据统计或场景对象,例如 Boss 死亡后解锁成就,或战斗胜利后更新成长数据
-
在 GCS 中处理伤害、治疗、状态、卡牌移动、能量与目标选择,使战斗规则保留在卡牌 FlowGraph 中
故障排查
| 症状 | 检查项 |
|---|---|
Raise GES Event 报集成未安装 | 确认项目里有 GES 且 TinyGiants.GES.Runtime 存在,然后让 Unity reload 以更新 TG_GES_INSTALLED |
Warning:GameEventManager not found in scene | 在战斗触发事件之前,把 GES manager 加进场景或完成初始化 |
| Warning:GES 事件 GUID 找不到 | 在节点上重选事件,保存的 GUID 已不对应现有事件 |
| Argument 收到 null | Argument 类型必须能解析,所选来源必须能产出该类型的值,重选事件会重新填好类型 |
| GES 事件拒绝 Sender 或 Argument | 所选来源的值需要符合事件的参数类型,检查 Console 中的类型警告并重选事件 |
On GES Event 从不触发 | 节点上必须选好事件,事件在战斗开始时必须处于激活状态,且它所属的卡牌、状态或敌人在触发那一刻要在牌堆里或存活 |
| GCS 事件正常,GES 监听器无响应 | 在 GES Event Bridge 中确认 47 项映射已同步,场景中的 GameEventManager 已注册并启用对应数据库 |