跳到主要内容

事件参考

GCS · Events

全部 43 个内置事件:常量、字符串值、payload 类型、每个字段,以及各自的典型订阅者。

编写监听器时使用这一页。每一行都与出厂的 GCSEventNames 和 GCSEventArgs 源码一致。

本页把 GCSEventNames 中的每个常量和 GCSEventArgs.cs 中的每个 payload class 列成表:六组共 43 个事件。字符串值只有一条规则,常量名前加 GCS_ 前缀,所以 OnCardPlayed 广播出来是 GCS_OnCardPlayed

这些名字和 Game Card Monitor 的 Event 页签显示的名称完全相同。想确认一张卡实际触发了哪些事件,可以打开 Monitor,在 Play Mode 中执行一次对应操作:

Game Card Monitor 的 Event 页签,按时间顺序列出战斗中触发的 GCS 事件名

战斗与回合事件

ConstantString valuePayloadFields典型用途
OnBattleStartedGCS_OnBattleStartedNoneNone初始 HUD 刷新、战斗开场动画。
OnTurnStartedGCS_OnTurnStartedTurnEventArgsTurnNumber回合开始的 UI 刷新。
OnEnemyTurnStartedGCS_OnEnemyTurnStartedTurnEventArgsTurnNumber敌方阶段横幅或输入锁定。
OnTurnEndedGCS_OnTurnEndedTurnEventArgsTurnNumber回合结束清理与日志。
OnDrawPhaseGCS_OnDrawPhaseTurnEventArgsTurnNumber抽牌阶段 UI 与抽牌数量表现。
OnDiscardPhaseGCS_OnDiscardPhaseTurnEventArgsTurnNumber弃牌阶段 UI 与清理。
OnBattleEndedGCS_OnBattleEndedBattleEndedEventArgsWon胜利或失败遮罩。

卡牌事件

ConstantString valuePayloadFields典型用途
OnCardPlayedGCS_OnCardPlayedCardPlayedEventArgsCardInstanceIdTargetUnitId战斗日志、出牌动画、连击计数。
OnCardModifiedGCS_OnCardModifiedCardModifiedEventArgsInstanceId刷新费用、升级或变形后的卡牌 UI。
OnCardDrawnGCS_OnCardDrawnCardLifecycleEventArgsInstanceIdCard抽牌动画与手牌刷新。
OnCardDiscardedGCS_OnCardDiscardedCardLifecycleEventArgsInstanceIdCard弃牌动画与牌堆刷新。
OnCardExhaustedGCS_OnCardExhaustedCardLifecycleEventArgsInstanceIdCard消耗(exhaust)动画与牌堆刷新。
OnCardRetainedGCS_OnCardRetainedCardLifecycleEventArgsInstanceIdCard保留反馈。
OnCardAddedToHandGCS_OnCardAddedToHandCardLifecycleEventArgsInstanceIdCard生成卡牌的 UI。
OnCardAddedToDeckGCS_OnCardAddedToDeckCardLifecycleEventArgsInstanceIdCardRun deck 或加牌反馈。
OnDrawPileShuffledGCS_OnDrawPileShuffledNoneNone洗牌动画或牌堆计数刷新。

单位、HP、护甲、伤害与能量事件

ConstantString valuePayloadFields典型用途
OnUnitHpChangedGCS_OnUnitHpChangedUnitHpChangedEventArgsUnitIdCurrentHpMaxHpCurrentArmorPreviousHpPreviousArmorHP 与护甲条。
OnUnitDiedGCS_OnUnitDiedUnitDiedEventArgsUnitIdTier死亡动画、奖励、目标清理。
OnDamageDealtGCS_OnDamageDealtDamageEventArgsSourceUnitIdTargetUnitIdAmountLethal输出伤害日志与命中反馈。
OnDamageTakenGCS_OnDamageTakenDamageEventArgsSourceUnitIdTargetUnitIdAmountLethal受击反应。
OnArmorGainedGCS_OnArmorGainedArmorChangedEventArgsUnitIdAmountCurrentArmor护甲飘字与护甲条刷新。
OnArmorLostGCS_OnArmorLostArmorChangedEventArgsUnitIdAmountCurrentArmor破甲反馈。
OnEnergyChangedGCS_OnEnergyChangedEnergyChangedEventArgsCurrentEnergyMaxEnergy能量 UI 刷新。
OnEnergyGainedGCS_OnEnergyGainedEnergyDeltaEventArgsAmountCurrentEnergy获得能量反馈。
OnEnergySpentGCS_OnEnergySpentEnergyDeltaEventArgsAmountCurrentEnergy出牌耗能反馈。

状态事件

ConstantString valuePayloadFields典型用途
OnStatusChangedGCS_OnStatusChangedStatusChangedEventArgsUnitIdStatusStacks刷新状态 widget。
OnStatusTickedGCS_OnStatusTickedStatusTickedEventArgsUnitIdStatusTimingStacksBeforeStacksAfterHpBeforeHpAfter结算动画与战斗日志。
OnStatusInflictedGCS_OnStatusInflictedStatusTransitionEventArgsUnitIdStatusStacksSourceUnitId状态施加动画。
OnStatusExpiredGCS_OnStatusExpiredStatusTransitionEventArgsUnitIdStatusStacksSourceUnitId自然到期动画。
OnStatusRemovedGCS_OnStatusRemovedStatusTransitionEventArgsUnitIdStatusStacksSourceUnitId净化或移除动画。

敌人与延迟触发事件

ConstantString valuePayloadFields典型用途
OnEnemyUnitIntentChangedGCS_OnEnemyUnitIntentChangedEnemyUnitIntentChangedEventArgsUnitIdIntents意图 widget 刷新。
OnEnemyUnitActingGCS_OnEnemyUnitActingEnemyUnitActingEventArgsUnitIdIntent攻击前摇表现,例如演示里的突进动画。
OnEnemyUnitSummonedGCS_OnEnemyUnitSummonedEnemyUnitSummonedEventArgsSummonerIdSummonedUnitIdTier召唤动画与布局刷新。
OnEnemyPhaseChangedGCS_OnEnemyPhaseChangedEnemyPhaseChangedEventArgsUnitIdOldIndexNewIndex敌人行为阶段 UI。
OnDelayedTriggerScheduledGCS_OnDelayedTriggerScheduledDelayedTriggerScheduledEventArgsSourceUnitIdRemainingTurnsActionTypeName倒计时指示。
OnDelayedTriggerFiredGCS_OnDelayedTriggerFiredDelayedTriggerFiredEventArgsSourceUnitIdActionTypeName延迟效果触发反馈。
OnDelayedTriggerCancelledGCS_OnDelayedTriggerCancelledDelayedTriggerCancelledEventArgsSourceUnitId移除倒计时 UI。

奖励与选择事件

ConstantString valuePayloadFields典型用途
OnBattleRewardOfferedGCS_OnBattleRewardOfferedBattleRewardOfferedEventArgsCardCandidates显示奖励选择器。
OnBattleRewardSelectedGCS_OnBattleRewardSelectedBattleRewardSelectedEventArgsChoiceSelectedCard关闭奖励选择器并更新 run deck。
OnBattleRewardSkippedGCS_OnBattleRewardSkippedNoneNone关闭奖励选择器。
OnEffectChoiceOfferedGCS_OnEffectChoiceOfferedEffectChoiceOfferedEventArgsPromptTextCandidatesAllowSkip显示 FlowGraph 选择器。
OnEffectChoiceSelectedGCS_OnEffectChoiceSelectedEffectChoiceSelectedEventArgsSelectedIndex关闭选择器并记录选择。
OnEffectChoiceSkippedGCS_OnEffectChoiceSkippedNoneNone关闭选择器。

Payload 类型

Payload typeFields
TurnEventArgsint TurnNumber
CardPlayedEventArgsGameCard Cardint InstanceIdint? TargetUnitId
CardModifiedEventArgsint InstanceId
UnitHpChangedEventArgsint UnitIdint CurrentHpint MaxHpint CurrentArmorint PreviousHpint PreviousArmor
UnitDiedEventArgsint UnitIdstring Tier
StatusChangedEventArgsint UnitIdGameStatus Statusint Stacks
StatusTickedEventArgsint UnitIdGameStatus Statusstring Timingint StacksBeforeint StacksAfterint HpBeforeint HpAfter
EnemyUnitIntentChangedEventArgsint UnitIdIReadOnlyList<IntentEntry> Intents
EnemyUnitActingEventArgsint UnitIdIntentTag Intent
EnemyPhaseChangedEventArgsint UnitIdint OldIndexint NewIndex
EnergyChangedEventArgsint CurrentEnergyint MaxEnergy
DelayedTriggerScheduledEventArgsint SourceUnitIdint RemainingTurnsstring ActionTypeName
DelayedTriggerFiredEventArgsint SourceUnitIdstring ActionTypeName
DelayedTriggerCancelledEventArgsint SourceUnitId
BattleRewardOfferedEventArgsIReadOnlyList<GameCard> CardCandidates
BattleRewardSelectedEventArgsRewardChoice ChoiceGameCard SelectedCard
EffectChoiceOfferedEventArgsstring PromptTextIReadOnlyList<ChoiceCandidate> Candidatesbool AllowSkip
EffectChoiceSelectedEventArgsint SelectedIndex
BattleEndedEventArgsbool Won
EnemyUnitSummonedEventArgsint SummonerIdint SummonedUnitIdstring Tier
CardLifecycleEventArgsint InstanceIdGameCard Card
DamageEventArgsint SourceUnitIdint TargetUnitIdint Amountbool Lethal
ArmorChangedEventArgsint UnitIdint Amountint CurrentArmor
EnergyDeltaEventArgsint Amountint CurrentEnergy
StatusTransitionEventArgsint UnitIdGameStatus Statusint Stacksint SourceUnitId

快捷方法覆盖范围

上面表格里除一个事件外,每个事件都有同名的 GCSApi 快捷方法,GCSEventNames.OnUnitHpChanged 对应 GCSApi.OnUnitHpChanged(...)。四种订阅形式覆盖全部场景:

  • GCSApi.OnBattleStarted(handler) 和其他无 payload 快捷方法接收 Action
  • GCSApi.OnUnitHpChanged(args => ...) 和其他 typed 快捷方法接收 Action<TArgs>
  • GCSApi.Subscribe<TArgs>(GCSEventNames.SomeEvent, handler) 按名订阅,handler 带类型。
  • GCSApi.Subscribe(GCSEventNames.SomeEvent, handler) 按名订阅,无 payload。

例外是 OnEnemyUnitActing,它没有快捷方法。带上 payload 类型按名订阅即可:

var sub = GCSApi.Subscribe<EnemyUnitActingEventArgs>(
GCSEventNames.OnEnemyUnitActing,
args => PlayAttackWindup(args.UnitId, args.Intent));

通过 GCSApi.RaiseGameEvent 触发的自定义事件同样没有快捷方法,按名订阅即可。


Nullability 说明

Field可能为 null原因
CardPlayedEventArgs.TargetUnitId有些卡打出时不需要目标,该字段是 int?
payload 中的 GameCard 字段极少,但 UI 代码仍应防御Runtime 会尽量跳过 null 卡牌,防御式 UI 没有成本。
payload 中的 GameStatus 字段极少,但 UI 代码仍应防御状态数据库在内容创作期间可能变动。
IReadOnlyList payload按非 null 处理Runtime 为每个内置事件都提供列表。

事件名与 FlowGraph 入口

图入口和 Hook(On Card Played 入口、伤害 Hook 等)是图内部的创作层时机点,不是通道广播,所以没有 GCSEventNames 常量。本参考只覆盖运行时事件通道。图侧的时机见入口与 Hook