跳到主要内容

用 Trigger 和 Chain 控制事件顺序

TinyGiants
Unity Games & Tools Developer

死亡音效和粒子可以由同一个事件分别启动,复活需要等淡出和场景加载完成时使用 Chain,把两种连接挂到同一个源事件后,每条响应都能按自己的时序执行

在同一个事件上连接 Trigger 和 Chain​

用 Trigger 派发独立响应​

触发一次源事件即可派发各个满足条件的 Trigger 目标,没有延迟时,GES 按优先级从高到低派发,各目标可以自行执行后续工作

Trigger Flow

将三个无参目标注册在同一个无参源事件上,这里禁用输入的优先级最高,因此在这三个立即派发的目标中先执行

onPlayerDeath.AddTriggerEvent(onDisableInput, priority: 20);
onPlayerDeath.AddTriggerEvent(onPlayDeathSound, priority: 10);
onPlayerDeath.AddTriggerEvent(onSpawnDeathParticles, priority: 5);

打开 Trigger Event Demo,检查同一个源事件如何连接施加增益、判定命中以及通知其他系统的分支

Trigger Demo Graph

用 Chain 排列有依赖的步骤​

Chain 节点在派发前等待 Delay,在派发后等待 Duration,启用 Wait Completion 会在持续时间之后再等一帧,如果后续步骤依赖动画、场景加载或其他异步操作的结果,在回调中发出完成事件,由该事件启动后续流程

Chain Flow

按执行顺序把步骤注册到同一个源事件,组成一条 Chain,这个例子先淡出屏幕,等待配置的时间再启动场景加载;加载代码完成后发出 onRespawnSceneLoaded

onPlayerDeath.AddChainEvent(onFadeToBlack, duration: 1.0f);
onPlayerDeath.AddChainEvent(onLoadRespawn);

onRespawnSceneLoaded.AddChainEvent(onTeleportPlayer);
onRespawnSceneLoaded.AddChainEvent(onResetPlayerState);
onRespawnSceneLoaded.AddChainEvent(onFadeIn, duration: 1.0f);
onRespawnSceneLoaded.AddChainEvent(onEnableInput);

在 Chain Event Demo 中,炮塔先检查安全锁再充能和发射,检查失败会在充能前停止这条 Chain

Chain Demo Graph

从同一个源事件启动两类响应​

将前面的 Trigger 和 Chain 一起注册到 onPlayerDeath,音效与粒子由 Trigger 分别启动,淡出与加载由 Chain 控制,场景加载完成后再进入复活步骤

Hybrid Flow

调整节点类型和参数​

当独立响应改为有先后依赖的步骤时,右键节点并选择 Convert to Chain,反向转换使用 Convert to Trigger

节点菜单中的 Convert to Chain

连线时,用兼容性颜色核对两端的事件签名,绿色表示匹配,黄色表示兼容但会舍弃部分或全部数据,橙色表示需要类型转换,红色表示不兼容,如果目标应使用默认参数,打开节点检查 Pass Argument

Node Connection

在代码中需要自定义转换时,向泛型重载传入 argumentTransformer,例如从 GameEvent<DamageInfo> 的参数中取出伤害值,再传给 GameEvent<float>

onDamage.AddTriggerEvent(onDamageNumber,
argumentTransformer: damageInfo => damageInfo.amount);

确定条件控制哪一步​

Flow Gate 决定节点是否派发目标事件,Trigger 条件失败时跳过对应分支,Chain 条件失败时停止这条 Chain 的剩余步骤

Game Event Behavior 中的 Action Condition 控制该事件绑定的 Event Action,GES 2.3 起,Game Event Receiver 也可以在 Inspector 中启用独立的动作条件,例如静音时跳过音效,同时保留其他监听器和流程步骤

把相同模式用到其他流程​

通知多个系统​

积分、数据上报、音效和界面可以从同一个击败事件分别响应,用 Trigger 直接连接各目标,选中相关节点并使用 Create Group,即可在画布上一起管理这些分支

Broadcaster Pattern

排列过场步骤​

镜头移动用时固定时,用 Chain 安排镜头移动后打开对话,若选项界面要等待玩家读完对话,由对话系统发出完成事件,再打开界面

Cinematic Pattern

切换 Boss 阶段​

用 Trigger 启动警告音和镜头震动,用 Chain 排列无敌状态和攻击模式切换,如果要等动画播完再生成敌人,从动画完成事件启动生成流程

Hybrid Boss Pattern

在 Play Mode 中检查​

打开 Game Event Monitor 后触发源事件,在 Recent 中核对触发顺序,在 Automation 中追踪连接,目标事件缺失时检查 Flow Gate 和时序,目标已触发但没有效果时检查监听器及其动作条件

打开 Trigger Event Demo · 打开 Chain Event Demo


🚀 全球开发者服务矩阵

🇨🇳 国区开发者社区

🌐 全球开发者社区

📧 支持与合作