GenericCombatSystem 快速开始
最短闭环是:启用 GCS 及其 .uplugin 依赖、按 GenericGameplayAbilities 文档的快速开始完成 Ability System 初始化,再在战斗角色上挂 UGCS_CombatSystemComponent,用一条近战 Trace 或配套项目关卡打出可观察的攻击结果。插件包不带 Content;购买后另行提供的配套项目是另一条观察路径。
1. 启用插件
在项目中启用 GenericCombatSystem。它会带上 GenericGameplayAbilities,以及 EnhancedInput、GameplayAbilities、ModularGameplay、TargetingSystem、StateTree、GameplayStateTree、MotionWarping。StateTree 与 MotionWarping 出现在 .uplugin 依赖里,GCS 运行时源码没有直接调用它们的 API。
输入缓冲、Input Setup 和 StateTree 输入节点属于产品附带的 Generic Input System,不是本插件模块图上的依赖。按键如何激活战斗 Ability,按 GIPS 或项目自己的输入层处理。
同时把 Ability System Globals 指到 UGGA_AbilitySystemGlobals,否则 Combat Flow 用的 GGA 属性回调和 Effect Context Payload 不会按预期分配。步骤见 GGA 文档。
2. 挂上最小组件集
在要参与战斗的 Pawn 上:
- 确认权威端已经
InitializeAbilitySystem。 - 添加
UGCS_CombatSystemComponent,指定CombatFlowClass(需要一个可实例化的UGCS_CombatFlow子类,并在上面放至少一条 Processor)。基类HandleGameplayEffectExecute为空,接线步骤见 注册第一条攻击结果。 - 近战再加
UGCS_TraceSystemComponent;远程再加UGCS_BulletSystemComponent。 - 需要锁定或阵营过滤时加
UGCS_TargetingSystemComponent与UGCS_CombatTeamAgentComponent。 - 让角色(或组件)实现
IGCS_CombatEntityInterface,至少能返回当前目标、是否死亡、当前武器和连击表(没有连击就返回空表)。
蓝图里用 Get Combat System Component / Find Combat System Component 确认组件找得到。
3. 准备一份攻击定义
新建 Data Table,行结构选 GCS Attack Definition(FGCS_AttackDefinition)。先填一行:
AttackTags:例如近战、轻击。TargetEffectClass:一个会改目标属性的瞬时 Gameplay Effect。需要本地预测反馈时,给该 Effect 加上UGCS_GEComponent_PredictivelyExecute。- 其余击退、Cue、Extension 可先留空。
近战再准备一行 FGCS_TraceDefinition(TraceTag、形状、Sweep 通道)。把该行填进 UGCS_AttackRequest_Melee 的 AttackDefinitionHandle,并在 TracesToControl 里写上同一个 Trace 标签。
4. 发出一次近战
任选一条路径:
路径 | 做什么 |
|---|---|
Ability Task | 战斗 Ability 里调用 |
动画窗口 | 在 Montage 上放 |
命中后,用 UGCS_CombatFunctionLibrary 把攻击定义句柄写入 Effect Context,再对目标应用 Effect。目标身上的 Combat Flow 会在属性 PostGameplayEffectExecute 回调里生成 FGCS_AttackResult 并注册到组件的 FastArray。
远程路径见 做一次远程攻击:WaitForBulletEvent 从 Gameplay Event 取出 UGCS_AttackRequest_Bullet。
5. 验证
PIE 后打开 Gameplay Debugger 的 Combat 分类(模块启动时注册):
- Shared 段能看到 Combat 组件、Combat Flow、战斗实体接口。
- 打出一击后,Attack Result 段出现最近一条结果,并能看到是否预测、是否已复制。
- 近战还能在 Trace 段看到句柄与激活状态。
- 日志类别
LogGCS_Combat/LogGCS_Trace提到 Verbose,能看到结算与 Sweep。
多人 PIE 先看服务器是否产生 Result,再看 AutonomousProxy 的 LocalPredicted Processor 是否只跑一次。
常见失败
现象 | 先查 |
|---|---|
蓝图搜不到 GCS 组件 | 插件与依赖是否启用,工程是否已编译 |
有动画没有命中 | Trace 组件是否存在;ANS 是否只是数据容器而 Task 没启动;碰撞通道 |
Effect 没有攻击上下文 | 是否写入 |
客户端有特效、服务器无结果 | 预测弹不会应用 GE;权威路径是否真的 Apply |
下一步
- 对照现成关卡:观察配套项目
- 让 Flow 产出第一条 Result:注册第一条攻击结果
- 分清 GGA / GIPS:系统边界
- 排错:调试与排错