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

相关推荐
复业思维202401082 小时前
STM32学习和实践笔记(45):SPI-FLASH实验
笔记·stm32·学习
zore_c2 小时前
【C语言】排序算法——快速排序详解(含多种变式)!!!
c语言·数据结构·笔记·算法·排序算法·深度优先·推荐算法
客梦2 小时前
数据结构--哈希表
数据结构·笔记
lkbhua莱克瓦242 小时前
基础-SQL的通用语法、分类以及DDL
开发语言·数据库·笔记·sql·mysql·ddl
代码游侠2 小时前
应用——HTTP天气查询
网络·笔记·网络协议·算法·http
HERR_QQ2 小时前
【cpp tool】GDB coredump vscode GUI 和多线程常用笔记
ide·笔记·vscode
夏幻灵3 小时前
如何理解编译?
经验分享·笔记
iconball3 小时前
个人用云计算学习笔记 --23(Shell 编程-2)
linux·运维·笔记·学习·云计算
iconball3 小时前
个人用云计算学习笔记 --26 OpenStack 核心服务
运维·笔记·学习·云计算·openstack