跳到主要内容

GES 集成

Guide

从 FlowGraph 触发 GES 事件,或让 GES 事件启动 Behavior 入口,同时保留 GCS 自己的事件通道

集成边界与双向通道

上图展示了 GCS 与 GES 之间的两条显式通道,Raise GES Event 与 Encounter Bootstrap 把战斗时机送入 GES,On GES Event 则让外部事件启动指定 Behavior,未配置这些入口的 GCS 事件不会自动跨系统转发

提示

43 个内置 GCS 事件始终使用内部通道,只有显式配置的 FlowGraph 节点与 Encounter Bootstrap 事件会跨到 GES

检测与安装

集成要求同一个 Unity 项目中存在 Game Event System,GCS 的编辑器检测器会查找名为 TinyGiants.GES.Runtime 的 Assembly Definition,并在 Standalone、Android、iOS、WebGL 及当前活动的 Build Target Group 上同步 TG_GES_INSTALLED Scripting Define Symbol

完成以下步骤后,检测器会自动启用集成:

  1. 导入 GES,项目已经安装时无需重复操作
  2. 等待 Unity 完成编译和 Domain Reload
  3. 检测器找到 TinyGiants.GES.Runtime,加上 TG_GES_INSTALLED
  4. Raise GES EventOn GES Event 两个节点就绪,Encounter Bootstrap 中也会显示 Use GES Events
提示

移除 GES 后,检测器会清除对应 Define,GCS 随即退回内部事件通道

从 Encounter Bootstrap 触发事件

选择场景里的 GameCardEncounterBootstrap 并展开 Events,可以看到参数 Use GES Events 是默认关闭的,因此已有场景会直接使用 On Bootstrap UnityEvent,当开启 Use GES Events 后,UnityEvent 会被 On Bootstrap Events 列表替代

提示

当遭遇战启动后,Bootstrap 会从上到下触发列表中的全部事件,但这两种模式是互斥的,GES 模式不会调用 UnityEvent,UnityEvent 模式也不会触发 GES 列表

从 GCS 触发 GES 事件

在 FlowGraph 中需要通知其他项目系统的位置加入 Raise GES Event,该节点位于 Add Node 菜单的 Event 分类,安装 GES 后,节点上的 GES Event 字段会显示事件选择器,列表按事件数据库分组,选中事件时会同时填入 Argument 与 Sender 类型,无需手写 GUID 或类型名

提示

节点支持无参数事件、单 Argument 事件 和 Sender Argument 事件,参数值可以来自固定值、Unity Object、结构化数据或当前执行上下文,所有内容都通过节点上可见的 Picker 与 Source 字段配置

配置序列化字段、动态选项、上下文来源和 Primitive 类型边界时,直接查看 Raise GES Event 节点手册

用 GES 事件启动 Behavior

On GES Event 入口(Entry 分类)让图在战斗期间响应某个 GES 事件的触发,事件同样在节点上用选择器挑

战斗开始时,GCS 会绑定当时处于激活状态的每个 GES 事件,战斗中途才激活的事件需要等到下一场战斗才会生效,此后,被选中事件的任意一次触发都会启动匹配入口,作用范围包括:

  • 当前位于抽牌堆、手牌、弃牌堆或消耗堆的卡牌

  • 存活单位身上的状态

  • 存活敌人的 Behavior

三种 GES 事件形态,即无参数、单 Argument、Sender 加 Argument 都受支持,GES 的 Payload 本身不会传入 FlowGraph,入口触发后,Behavior 仍然从当前战斗状态读取所需数据

校验兜底

FlowGraph 校验器会标出没选事件的 On GES Event 入口,避免空引用进入成品图

没有 GES 时的行为

GCS 照常编译运行,所有内置事件照常工作,图走到 Raise GES Event 节点也不会崩溃,内部通道会记一条 warning:

[GCSEventChannelInternal] RaiseGesEvent('...') ignored: GES integration not installed.

这样可以让共享卡牌与测试内容继续用于未安装 GES 的项目,同时由 Console 明确记录被忽略的调用,便于定位缺失集成

保持系统职责边界

  1. 跨系统时机适合交给 Bridge,例如 Boss 死亡后解锁成就、打出特定卡牌后推进任务、胜利后通知局外成长系统、上报分析里程碑,或者驱动已经监听 GES 的场景对象

  2. 伤害、治疗、状态、卡牌移动、能量、目标选择与其他战斗规则仍应保留在 GCS 中,让一张卡牌只看自己的 FlowGraph 就能理解,Bridge 只承担系统交接,不作为第二套卡牌行为层

故障排查

症状检查项
Raise GES Event 报集成未安装确认项目里有 GES 且 TinyGiants.GES.Runtime 存在,然后让 Unity reload 以更新 TG_GES_INSTALLED
Warning:GameEventManager not found in scene在战斗触发事件之前,把 GES manager 加进场景或完成初始化
Warning:GES 事件 GUID 找不到在节点上重选事件;保存的 GUID 已对不上任何现存 GES 事件
Argument 收到 nullArgument 类型必须能解析,所选来源必须能产出该类型的值,重选事件会重新填好类型
Sender 感知事件只带 argument 触发目标 GES 事件类型没有匹配的 sender 加 argument 触发方法,bridge 走了回退
On GES Event 从不触发节点上必须选好事件,事件在战斗开始时必须处于激活状态,且它所属的卡牌、状态或敌人在触发那一刻要在牌堆里或存活
GCS 事件正常,GES 监听器无响应Bridge 只转发显式的 Raise GES Event 调用,不会把内置 GCS 事件镜像进 GES