GCS 1.3 发布日志

Cover.GCS
作

作者

作者

创建时间: 2025年4月15日更新时间: 2026年4月14日

目录

1.3版本

这是针对UE5.4的最后一次更新,1.3以上版本则会在UE5.5上进行开发。

很多更新细节体现在了演示项目,这里主要罗列一些主要修改。

战斗流程

新增:AttackResultProcessor支持WorldContext,意味着在蓝图中可以使用更多的节点(比如SpawnActor)。

碰撞检测系统

碰撞检测实例不再使用GameplayEventData作为TraceInformation,并由Set/GetTraceSource和Set/GetAttackRequest代替。

提供AsyncAction_CollisionTrace,方便使用。

子弹系统改进

修复:正确同步Hit事件。

改进:子弹的Trace信息放在子弹定义上,同样支持一个子弹关联多个Trace。

改进:子弹现在可以配置是否穿透角色,场景。

改进:子弹系统进一步完善,支持穿透,子弹命中生成子弹(链)

演示内容改进

武器相关的TargetingPreset会过滤掉武器类型Actor。

移除演示内容中的Posture(躯干)属性,因为这太特定于游戏机制了:用户仍然可以完美防御/弹反,但其造成的结果可以自行定义。

将DemoCombatCore中的运动控制逻辑单独解耦为一个简单的运动系统,1是为了可以在不同的项目中不用重新造轮子,2是提供更清晰的战斗系统整合任意运动系统的方式。

修正武器动画层在某些情况下没有正常link/unlink。

碰撞检测系统

规范TargetingSourceContext的用法。

TraceInstance使用TargetingSystem进行目标获取。其中,TargetingSourceContext中的内容如下:

SourceActor是与Trace关联的PrimitiveComponent的Owner,如:Trace捆绑的武器Mesh,SourceActor就是武器;Trace捆绑的子弹的Shape,SourceActor就是子弹。

InstigatorActor:所有的Trace实例都由CollisionSystem组件创建和管理,所以CollisionSystem组件的Owner就是InstigatorActor。

锁定系统

“LockIndicator组件”强化了,你可以填一堆Indicator定义,当角色被锁定后会自动创建WidgetComponent并与UI进行关联。默认情况下,只有LockOn UI和角色血条UI会在被锁定时显示。

简单来说,这是一个方便地在被锁定目标上动态创建一堆世界UI的组件。

阵营系统

GCS_CombatTeamAgentComponent允许在设置TeamId时,也会同步设置到Pawn所属的Controller上(如果Controller实现了GenericTeamAgentInterface)

迁移指南

打开你项目的DefaultGameplayTags.ini,并在[/Script/GameplayTags.GameplayTagsSettings]下添加如下的Tag重定向。

plaintext
1[/Script/GameplayTags.GameplayTagsSettings]
2+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Tailsman",NewTagName="GIS.Item.Tailsman")
3+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon",NewTagName="GIS.Item.Weapon")
4+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Axe",NewTagName="GIS.Item.Weapon.Axe")
5+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.BowAndArrow",NewTagName="GIS.Item.Weapon.Bow")
6+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.GreatSword",NewTagName="GIS.Item.Weapon.GreatSword")
7+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Hammer",NewTagName="GIS.Item.Weapon.Hammer")
8+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Pistol",NewTagName="GIS.Item.Weapon.Pistol")
9+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Sword",NewTagName="GIS.Item.Weapon.Sword")
10+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Skill",NewTagName="GIS.Item.Skill")
11+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Potion",NewTagName="GIS.Item.Consumable")
12+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type",NewTagName="GIS.Item")
13+GameplayTagRedirects=(OldTagName="GIS.Item.Type",NewTagName="GIS.Item")
14从1.3开始,必须使用GCS_AbilitySystemGlobals,你可以参考案例项目中的DefaultGame.ini
15[/Script/GameplayAbilities.AbilitySystemGlobals]
16+GlobalAttributeSetDefaultsTableNames="/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats"/Script/Engine.CurveTable'/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats.CT_GCS_DefaultStats'
17AbilitySystemGlobalsClassName="/Script/GenericCombatSystem.GCS_AbilitySystemGlobals"
18+GameplayCueNotifyPaths=/Game/GenericGame/CombatSystem/Extras/Cues
19;AbilitySystemGlobalsClassName="/Script/GenericGameplayAbilities.GGA_AbilitySystemGlobals"
20PredictTargetGameplayEffects=true
21bUseDebugTargetFromHud=true