跳转到正文

开发者设置与战斗数据

作

作者

作者

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

目录

开发者设置与战斗数据

本页解释攻击从请求走到 EffectContext、再收成攻击结果时会读到的配置对象。运行链路见 战斗流程与攻击结果 和 攻击定义与请求。

UGCS_DeveloperSettings

项目级 UDeveloperSettings,Config=Game,Details 显示名为 Generic Combat System Developer Settings。用蓝图节点 Get GCS Developer Settings 或 UGCS_DeveloperSettings::Get() 读取。它只提供两条全局查找/调试开关,不持有 Combat Flow、Processor 或攻击表。

字段

意图

何时调整

误配风险

CharacterMeshLookupTag

用组件 Tag 找角色主骨骼网格,默认 "Main"。函数库按这个名字在 Actor 上 GetComponentsByTag。

角色网格 Tag 不是 Main 时。

Tag 对不上时,从角色网格取 Socket 的近战/子弹原点会落到 Actor 原点或空组件。

bDisableAffiliationCheck

调试时关掉阵营过滤,允许跨队伤害和跨队锁定。

只在本地验证友军误伤、训练木桩时打开。

打包进默认 ini 会让 GCS:FilterTask (Affiliation) 永远放行,联机也会打到队友。

改完后看 DefaultGame.ini 的 [/Script/GenericCombatSystem.GCS_DeveloperSettings]。角色网格 Tag 要和这里一致。

FGCS_AttackDefinition

Data Table 行结构(显示名 GCS Attack Definition)。近战请求、子弹定义和函数库都从这里取“打中之后应用什么”。生命周期是:创作时写进表 → 请求或子弹带上行句柄 → 应用 GE 时把句柄写入 FGCS_ContextPayload_Combat → Combat Flow / Processor 再读回来。

TargetEffectClass 与 TargetEffectContainer 不互斥。两者都有效时各自独立应用,句柄会写进每条 Spec 的 EffectContext。AttackTags 作为动态 AssetTags 追加到 Spec;SetByCallerMagnitudes 只写入 Value > 0 的条目。

字段

意图

何时调整

误配风险

AttackTags

描述这次攻击(近战/远程、劈砍/打击)。

处理器或标签关系要按攻击类型分流时。

空容器时 Cue / Event Processor 只能靠别的聚合标签匹配。

SetByCallerMagnitudes

给 Spec 填 SetByCaller。

伤害修正、力度系数。

Value <= 0 的条目会被跳过,看起来像“配了没生效”。

TargetEffectClass

命中目标上的单个 GE 类(软引用)。

一击只改一套属性,例如扣血。

软引用未加载则该路 GE 不会建出来。

TargetEffectClassLevel

上面那个 GE 的等级,默认 1。< 1 时用 Ability 等级。

按技能等级放大效果时。

写成 0 会走 Ability 等级;Ability 等级也没设时 Spec 等级会偏弱。

TargetEffectContainer

GGA 效果容器,可与 TargetEffectClass 同时应用。容器内 GE 等级跟 Ability 等级。

伤害 + 状态、或要 TargetingPreset 选目标时。

容器无效时只剩单个 GE;两边都空则命中没有结算 GE。

TargetGameplayCues

命中时要在目标上执行的 Cue 标签。

受击闪光、材质闪白。

内置 GameplayCue Processor 发现这里非空会覆盖 Processor 自己的 Cue 列表。

KnockbackDistance / KnockbackMultiplier

击退距离(厘米)与倍率,默认 100 / 1。倍率 ClampMin=1。

项目 Processor 或受击 Ability 要从定义读击退时。

插件没有内置击退 Processor;只填数字不会自动位移。

HitStallingDuration

命中顿帧秒数,<= 0 禁用。

重击需要动画停顿。

同样要项目侧读取;没有读取逻辑时改它看不见效果。

HitPlayRateFactor

命中动画播放速率因子,Clamp 0.1–0.9,默认 0.1。

配合顿帧做慢放。

同上,只是定义载荷。

NativeExtension

C++ TInstancedStruct<FGCS_AttackDefinitionExtension>。

原生代码给定义加字段。

蓝图读不到这份结构。

Extension

蓝图 FInstancedStruct。

策划给定义加自定义行数据。

类型选错时 Get 失败,选招或结算会当它不存在。

近战把行句柄放在 UGCS_AttackRequest_Melee;远程把同一行挂在 FGCS_BulletDefinition.AttackDefinition。子弹系统在权威端从定义构建 GE,并调用 AddAttackHandleToGameplayEffectSpec。

攻击请求

UGCS_AttackRequest_Base 是 Abstract、Const、DefaultToInstanced、EditInlineNew 的 UObject 请求。基类 GetAttackDefinitionHandle 为空,具体类型必须给出行句柄。GetAttackDefinition() 按句柄读表,行无效时返回默认空定义。

UGCS_AttackRequest_Melee

动画窗口或 Collision Trace Task 在激活期间带着这份请求。TracesToControl 决定窗口里启停哪些 Trace;AttackDefinitionHandle 指向 FGCS_AttackDefinition 行。

字段

意图

何时调整

误配风险

TracesToControl

本窗口要控制的 Trace 标签集合。

同一把刀有刀刃/刀尖两条 Trace 时。

标签与 FGCS_TraceDefinition.TraceTag 对不上则窗口空转。

AttackDefinitionHandle

命中后用的攻击定义行。

每条近战招式一行。

空句柄时 GE 没有攻击上下文,Processor 读不到定义。

UGCS_AttackRequest_Bullet

子弹请求额外决定发射原点、朝向和是否先锁目标。GetTargetingTransform / GetWeaponTargetingSourceLocation / GetPawnTargetingSourceLocation 可覆写。CameraTowardsFocus 时不显示 Socket 字段。AI 或不由本地玩家控制的射击走权威生成,跳过本地弹道预测。

字段

意图

何时调整

误配风险

BulletDefinitionHandle

子弹定义行。

每种弹种一行。

空句柄或行结构不对则不会生成子弹。

TargetingSourceType

发射变换来源,默认 PawnForward。可选相机朝焦点、Pawn/武器朝前或朝焦点、Custom。

枪口跟手、跟相机或跟锁定目标时。

Custom 却不覆写 GetTargetingTransform 会得到错误原点。

SourceComponentLookupTagName

查找来源组件的 Tag。

网格不是默认组件时。

None 时回退到 Pawn/武器默认位置。

SourceSocketName / SourceWeaponSocketName

角色或武器 Socket;找不到则回退到来源位置。

枪口、弓弦。

名字写错会从手或武器原点出弹,看起来像“弹偏”。

LocationOffset

来源位置附加偏移。

枪口再往前挪一点。

偏移过大子弹会穿进自己的碰撞。

bRequireTargeting

是否必须先有锁定目标。

锁定射击、引导技。

打开后 GetTargetActor 为空就不会按锁定方向发射。

TargetingPreset

这次射击自己的 Targeting 预设。

不走角色锁定组件、临时扫一轮目标时。

空 Preset 且 bRequireTargeting 为真时没有目标。

GetAttackDefinitionHandle 转给子弹定义里的 AttackDefinition。结算 GE 仍来自那一行,不是子弹请求上另填一份。

FGCS_AttackResult

Combat Flow 在属性 PostGameplayEffectExecute(以及挂了预测执行组件的本地预测执行)之后产出的一条结果。权威结果进 FGCS_AttackResultContainer FastArray 复制;预测结果先留在本机,等相同 PredictionKey 的权威结果到达后标 bWasPredicated。

字段

意图

何时出现

误配风险

OptionalObject

与这次攻击相关的可选对象。

项目 Flow 把过程对象挂上来。

复制后客户端指针可能失效,不要当权威状态。

EffectContextHandle

带着战斗载荷、HitResult、Causer 的 GE 上下文。

每次从属性回调建结果时。

没写入攻击定义句柄时 Processor 读到空定义。

AggregatedSourceTags / AggregatedTargetTags

聚合后的来源/目标标签。HandleAttackResult 还会并入载荷里的 DynamicTags。

带 TagRequirement 的 Processor 过滤。

来源标签空时带 Query 的 Event/Cue Processor 永不命中。

bConsumed

本机:结果是否已被消费。不复制。

Processor 或项目逻辑标记“这条用过了”。

已消费的结果不会再进 Processor。

bWasPredicated

本机:复制结果已用 PredictionKey 匹配到本地预测。不复制。

预测命中对上权威结果后。

为 true 时 LocalPredicted Processor 不再跑第二次。

bWasReplicated

本机:这条来自 FastArray 复制。不复制。

客户端收到权威条目后。

ServerOnly Processor 看到它会跳过。

容器有容量上限(组件构造时默认 10)。它是历史缓冲,不是创作资产。基类 HandleGameplayEffectExecute 是空的,项目 Combat Flow 必须在这里从属性回调填好结果并 RegisterAttackResult。

FGCS_ContextPayload_Combat

挂在 GGA EffectContext 上的战斗载荷。函数库在应用攻击定义时写入表与行名;预测执行组件写入 PredictionKey 和 bIsPredictingContext。Ability System Globals 必须是 GGA 那套,否则这块载荷不会被分配。

字段

意图

何时写入

误配风险

bIsPredictingContext

Spec 正在本地预测执行。

AutonomousProxy 上预测执行组件跑起来时。

Default / ServerOnly Processor 看到它会跳过。

PredictionKey

把本地预测结果和权威复制结果配成一对。

预测执行组件 OnGameplayEffectApplied。

没写入则复制回来无法标 bWasPredicated,Cue 可能播两次。

AtkDataTable / AtkRowName

攻击定义表和行。

AddAttackHandleToGameplayEffectSpec。

只 Apply GE、不走函数库时 Processor 读不到定义。

BulletDataTable / BulletRowName

子弹定义表和行。

子弹构建 GE 时。

近战结果里通常为空,属正常。

DynamicTags

应用 GE 时追加的标签,例如 MMC / Execution。HandleAttackResult 会并进来源标签。

Flow 的 PreApply 或计算类。

Event Processor 会把它们并成 Instigator Tags。

TaggedValues

带标签的浮点数组,Cue Processor 可按 Tag 取 Raw/Normalized Magnitude。

结算时写入伤害幅度。

Cue 上的 Magnitude Tag 对不上则幅度为 0。

SetTaggedValue / GetTaggedValue 按标签覆盖或读取;未存储时读到 0。

UGCS_AbilityActionSetSettings

DataAsset(显示名 GCS Ability Action Set),不是 Developer Settings,也不是角色组件。战斗实体的 QueryAbilityActionsByContext 通常把当前武器或技能上下文交给这份资产,选出本招要播的 Montage 和可选 Cost GE。

SelectBestAbilityActions(SourceTags, TargetTags, AbilityTags, OutActions):按 ActionSets 里第一条 AbilityTag 能 MatchesAny(AbilityTags) 的集合;再扫 Layered,Source/Target Query 都匹配则用该层 Actions;否则回退到该集合的默认 Actions。没有任何 AbilityTag 匹配则返回 false。

FGCS_AbilityAction

字段

意图

何时调整

误配风险

Animation

要播的 UAnimMontage。

每条动作一行。

空 Montage 仍可能被选中,技能播完没有动画。

PlayRate

播放速率,默认 1。

同一 Montage 快/慢版本。

过低会拉长 Trace 窗口,看起来像“判定拖尾”。

CostGameplayEffect

选出这条动作时要应用的 Cost GE。

不同动作耗不同体力。

只配在动作上、技能自己的 Cost 又配一份,会扣两次。

Extension

C++ TInstancedStruct<FGCS_AbilityActionExtension>。

原生给动作加字段。

蓝图 InstancedStruct 不在这个字段上。

同一集合里还可以配 StartSection、bStopWhenAbilityEnds、根运动缩放。Layered 用 Source/Target TagQuery 覆盖默认 Actions,适合“对空中目标播另一段”。

UGCS_GEComponent_PredictivelyExecute

挂在瞬时 Gameplay Effect 上的 Effect Component。AutonomousProxy 本地 Apply 时:先把当前 PredictionKey 写入战斗载荷,再标 bIsPredictingContext,然后 PredictivelyExecuteEffectSpec。本地属性回调因此也会进 Combat Flow,产出一条预测版 FGCS_AttackResult。

字段

意图

何时打开

误配风险

bPredictGameplayCues

预测执行时是否同时预测 Cue。

受击闪光必须在本地立刻看见。

打开后仍要让 Cue Processor 走 LocalPredicted,否则权威复制那一遍可能再播一次。

子弹的本地预测只预测弹道和表现,不会走这条 GE 预测。近战要本地受击反馈时,把本组件加在目标 Instant GE 上,并让对应 Processor 遵守 ExecutePolicy。详见 处理器与战斗钩子。