本文介绍了游戏技能GA_Dash的创建与实现过程。首先创建GameplayAbility并添加GameplayAbility.Movement.Dash标签,封装了GetDashDirection和GetMaxSpeed两个函数,其中GetDashDirection根据最近按键输入方向确定冲刺方向而非角色朝向。其次说明了如何向角色的AbilitySystemComponent注册该技能,包括技能赋予和手动触发机制。最后提及了蓝图类中GameplayCue的实现,包括添加HandleGameplayCueFunction和GameplayCue标签。整个流程涵盖了从技能创建到实际应用的关键步骤。

角色是拥有者
Gameplay Ability 是技能逻辑核心
Gameplay Cue 是视觉/音效反馈
1.创建技能
创建一个 GameplayAbility GA_Dash

Class Defaults -> AssetTags 中给这个技能添加一个Tag 名为GameplayAbility.Movement.Dash

两个函数解析: 用函数的作用其实只是为了主界面不要太多逻辑,封装到函数界面,这样主界面就简洁一点
GetDashDirection 作用得到最近一次按键输入方向
如果只是Get Actor Forwar Vector ,你朝前,你按W想像后冲刺这样是不行的,必须等人物朝后,再按冲刺技能才行
如果是使用了最近一次按键方向,你朝前,你按W,则会向后冲刺,不用等人物朝后方才能向后冲刺

GetMaxSpeed Movement Component 有这个属性

2.注册监听技能的使用
我们创造了这个技能,需要告诉这个角色 的AbilitySystem Component 你会什么技能
添加一个函数 赋予这个角色技能

手动触发调用这个技能

3. Add Gameplay Cues 蓝图类

添加一个HandleGameplayCue Function And Add a Gameplay Cue Tag Name

4. One more thing
🔥 1. 角色(Character / Actor with AbilitySystemComponent)
在 GAS 中:
任何想拥有技能的对象都必须有一个 Ability System Component(ASC),通常挂在 Character / Pawn / PlayerState 上。
这个组件负责:
管理该角色拥有的所有技能(Gameplay Ability 列表)
处理技能激活与生命周期
保存 Gameplay Tags 和 Attributes(属性值)
和网络复制协作(确保客户端/服务器同步)Epic Games Developers+1
📌 角色是"容器"和"执行者"
它本身不是技能,但它 拥有 技能:
角色 ↳ 拥有 Ability System Component ↳ 拥有多个 Gameplay Ability
🔥 2. Gameplay Ability(技能)
这是 GAS 的核心对象:
Gameplay Ability = 一个可以在游戏逻辑上被执行的技能或行为单元
例如:
普通攻击
冲刺
施法
使用物品
也可以是"非传统意义的能力",比如跳跃、互动等。Epic Games Developers
每个 Ability:
✔ 负责执行这个技能的全部逻辑
✔ 能够读取角色的属性(比如攻击力、消耗资源)
✔ 可以产生 Gameplay Effects(比如扣血、BUFF)
✔ 可以触发 Gameplay Cues (播放粒子、声音)Epic Games Developers
简单比喻:
Gameplay Ability = "一个技能逻辑的蓝图/代码" 比如:Dash BP / Fireball BP / Heal BP
🔥 3. Gameplay Cue(提示/视觉表现)
这是 视觉/音效表现层,通常不会包含核心游戏逻辑:
Gameplay Cue = GAS 用来处理粒子、音效、屏幕抖动等视觉反馈的系统 。Epic Games Developers
Gameplay Cue 的职责:
✅ 根据 Gameplay Effect 的 Tag 自动触发对应的特效
例如:
GameplayEffect 扣血 ↳ 自动触发 GameplayCue "BloodHitEffect"或:
❗ Ability 本身手动触发一组视觉反馈
例如:
Fireball Ability → 触发 FireballLaunch Cue注意:
Gameplay Cue 只是"展示效果"
不影响属性和核心逻辑
可能是 不可靠广播(unreliable) ,也就是可能在某些网络环境下延迟/丢失(只用于表现层)reddit.com
🔍 4. 它们之间的关系总结图(最核心)
Character (Actor) └── Ability System Component (ASC) ├── Gameplay Ability 1 (GA_1) ├── Gameplay Ability 2 (GA_2) └── ... ↳ 在激活时可能生成 GameplayEffect ↳ GameplayEffect ↳ 可能触发 GameplayCue(显示特效)
🧠 功能上的区别总结
系统组件 作用 是否包含逻辑 角色 (Actor) 技能的拥有者 ❌ Ability System Component 管理技能生命周期、Tags、效果复制 ❌ Gameplay Ability 实际执行技能逻辑 ✅ Gameplay Effect 修改属性、状态 ⚙️ Gameplay Cue 视觉/音效反馈 ❌
💡 官方视角解释关键点
📌 角色和 ASC 的职责
角色提供了使用技能的能力,GAS 系统框架通过 ASC 来处理这个角色的所有能力、状态、属性等。Epic Games Developers
📌 Gameplay Ability 的核心含义
它不是单纯"按键触发表现特效",而是:
✔ 完整描述技能行为
✔ 根据条件决定能否释放
✔ 在激活时调用 Gameplay Effect
✔ 可以触发动画、事件、状态变更
✔ 可以与系统内部任务协作处理复杂行为(比如连击、异步操作等)Epic Games Developers
所以在你的 GAS 框架里:
Gameplay Ability = 技能定义 (逻辑 + 结果)
📌 Gameplay Cue 的真正职责
它不是逻辑判断,也不是属性计算,不会改变任何状态:
它只负责表现效果,例如:
👉 粒子效果
👉 SFX / 音乐
👉 屏幕抖动
👉 UI 反馈
可以关联 Gameplay Effect 的 Tag 自动触发。Epic Games Developers
⭐ 用一个具体流程例子帮你理解
举个完整的流程:
1. 角色按键触发 Ability 2. ASC 找到对应的 Gameplay Ability 3. Ability 尝试激活,做逻辑判断(如资源/冷却) 4. 激活成功 5. 产生一个 GameplayEffect(如扣血或加速) 6. GameplayEffect 根据 Tag 自动触发 GameplayCue 7. GameplayCue 显示视觉/声音效果这个流程里:
逻辑在 Ability + Effect
视觉在 Cue
角色权责在 ASC
互相协作但职责分明
🧩 总体理解(一句话版)
角色是拥有者
Gameplay Ability 是技能逻辑核心
Gameplay Cue 是视觉/音效反馈三者共同组成完整的技能系统。Epic Games Developers