跳转到正文

最佳实践

作

作者

作者

创建时间: 2026年10月21日更新时间: 2026年10月21日

目录

最佳实践

这些取舍来自 GCS 的组件边界和预测契约。先让一条近战或远程走到 Attack Result,再叠加连击、武器和多人表现。

先跑通最小链路

一个角色、一份 FGCS_AttackDefinition、一种命中方式(Trace 或子弹)就够验证 Flow。同时接连击表、多把武器、锁定和预测,会把“没编译”“通道不对”“ASC 未初始化”混在一起。最小闭环见 快速开始 和 挂上战斗组件。

定义描述规则,请求打开窗口

FGCS_AttackDefinition / FGCS_TraceDefinition / FGCS_BulletDefinition 是可复用的行数据。UGCS_AttackRequest_Melee / UGCS_AttackRequest_Bullet 只描述这一窗用哪一行、开哪些 Trace、朝哪发射。GCS_ANS_AttackTrace 和 GCS_ANS_BulletTrace 只存请求,Task 才执行。把整段规则写进 Notify 或 AnimBP,换招就要复制动画。

权威结果先于表现

服务器的 Attack Result 或已确认 Bullet Entry 是结算真源。客户端预测弹可以有轨迹和 Cue,但不应用 GE。先修权威路径,再调 LocalPredicted Processor、镜头和受击动画。Debugger 里 Shared 的预测摘要能区分 Pending、Matched 和 Conflict。

连击入口与攻击 Ability 分开

UGCS_ComboAbility 按实体 GetComboDefinitionTable 选行并改 ComboStep。子 Ability 负责 Trace 或子弹。不要让每个攻击 Ability 自己加减步骤,也不要把连击计数写进 AnimBP。步骤复制和选招失败都会失去统一入口。

武器激活不是装备栏

SetWeaponActive 控制这把 AGCS_WeaponActor 是否创建 Trace、是否处于可用态。SetCurrentWeapon 只标记本次动作用哪把,注释写明它不是武器切换。装备栏、插槽和生成世界 Actor 属于项目或库存层。可以同时激活多把武器,当前动作武器仍然只有一个。

不要把 GIPS 当成 GCS 模块

输入缓冲、Input Setup 和按键到 Ability 的映射属于产品附带的 Generic Input System。GCS 的 .uplugin 硬依赖 GGA 和引擎插件,不依赖 GIPS。缺按键时查 GIPS 或项目输入,不要在战斗组件里找 Enhanced Input 资产。UGCS_AbilityActionSetSettings 是 DataAsset,用来按标签选动作,也不是输入模块。

预测策略放对 Processor

EGCS_AttackResultProcessorPolicy:

策略

放什么

LocalPredicted

仅本地即时反馈:顿帧、轻 Cue、预测受击姿势

Default

各端都要看到、且不是预测上下文的结果

ServerOnly

死亡、掉落、扣资源等权威状态

把扣血或死亡放进 LocalPredicted,匹配复制结果时仍可能再跑一次,或在客户端改掉不该改的状态。编辑器可用 bEditorDebugEnabled 单条关闭 Processor 做对照。Death Processor 原生为空,项目必须自己实现死亡。