常见问题
下面按接入时最常卡住的点回答。机制细节仍以对应操作指南和核心功能页为准。
蓝图里找不到 GCS 组件?
先确认 GenericCombatSystem 已启用,工程已编译,然后重新打开编辑器再搜索。组件类在 UGCS_CombatSystemComponent、UGCS_TraceSystemComponent、UGCS_BulletSystemComponent、UGCS_TargetingSystemComponent、UGCS_CombatTeamAgentComponent。用 Get / Find 核对应挂在哪个 Actor 上。步骤见 挂上战斗组件。
攻击播了动画,但没有命中或 Attack Result?
先分近战和远程。近战:Trace 组件在不在、Collision Trace Task 有没有 AddMeleeRequest、GCS_ANS_AttackTrace 是否只存了请求、Sweep 通道是否对上。远程:Event 的 OptionalObject 是不是 UGCS_AttackRequest_Bullet,服务器有没有确认 Entry。有轨迹无 GE 时,先看是不是预测弹。排错顺序见 调试与排错。
Gameplay Effect 没拿到攻击上下文?
应用 GE 之前,用 UGCS_CombatFunctionLibrary 把攻击定义句柄写入 Effect Context,需要幅度或动态标签时再写 FGCS_ContextPayload_Combat。Ability System Globals 必须是 UGGA_AbilitySystemGlobals,否则 Combat Flow 读不到 GCS Payload。用 Debugger Attack Result 段或 Get Attack Definition Handle 验证。
多人下客户端表现和服务器结果不一致?
先看服务器是否产生权威 Attack Result 或已确认的子弹 Entry。服务器对了,再查 AutonomousProxy 的预测匹配:复制结果带同一 PredictionKey 时,LocalPredicted Processor 不应再跑。预测弹本来就只有轨迹,不能拿客户端特效当权威命中。
已经买了 GIPS 或 GGA,还要再买一次吗?
GenericCombatSystem 的 Fab 产品会把 Generic Input System、Generic Gameplay Abilities 和 GCS 一并交付。输入缓冲属于产品附带的 GIPS,不是本插件 .uplugin 依赖。已经随本产品获得的 GIPS / GGA 不需要为了启用 GCS 再买一份。
必须用指定角色基类吗?
不必。GCS 不要求特定 Character 父类。Pawn 或组件实现 IGCS_CombatEntityInterface,并挂上需要的战斗组件即可。Debugger Shared 段能看到接口,就说明查找路径通了。
加了 Death Processor,角色为什么没死?
UGCS_AttackResultProcessor_Death 的原生实现是空的,第一次执行只会打一条 Warning。死亡禁用碰撞、布娃娃或销毁 Actor 要项目自己覆写 HandleIncomingAttackResult,或改调实体的 StartDeath / FinishDeath。
项目设置里的战斗设置类去哪了?
当前类名是 UGCS_DeveloperSettings(项目设置显示为 Generic Combat System Developer Settings)。旧名已经用配置 ClassRedirect 接住。新代码和文档只写现名。阵营调试开关是上面的 bDisableAffiliationCheck。
有没有配套项目?
有。插件包本身不带 Content;购买后会另行提供配套项目。在内容浏览器打开 /Game/GenericDemo/GCS,进入 GCS_Demo 即可对照近战、远程、目标和连击。观察步骤见 对照配套项目观察 GCS。
Ability Action Set 是什么资产?
UGCS_AbilityActionSetSettings 是 DataAsset,用来按标签选出一组 Ability Action。它不是 Developer Settings,也不要写成普通 UObject 配置。