UE5 笔记二 GameplayAbilitySystem Dash(冲刺)

本文介绍了游戏技能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

相关推荐
长路归期无望16 小时前
一步步入门机器人【Arduino基础】
开发语言·经验分享·笔记·学习·机器人
物联网牛七七16 小时前
2、stm32f407学习笔记-存储器和寄存器以及映射
笔记·stm32·学习
Moonquakes54017 小时前
嵌入式学习基础笔记(51)
笔记·学习
电子小白12317 小时前
第13期PCB layout工程师初级培训-5-生产制造
笔记·嵌入式硬件·学习·制造·pcb·layout
秦奈17 小时前
Unity复习学习笔记(八):动画、模型与寻路
笔记·学习·unity
AI视觉网奇17 小时前
ue 缓存 使用笔记
笔记·学习·ue5
wdfk_prog1 天前
[Linux]学习笔记系列 -- hashtable
linux·笔记·学习
深情的小陈同学1 天前
工作学习笔记 —— 支持手机端的添加表单行操作
笔记·学习·ai编程
am心1 天前
学习笔记-小程序-导入商品浏览功能实现
笔记·学习
布谷歌1 天前
开发笔记:如何消除秘钥数据对RPC负荷、日志、系统安全的伤害?
网络·笔记·网络协议·rpc