zt3ff3n 发表于 2021-12-1 08:23

一、UE4技能系统GAS(GameplayAbilitySystem)新手教程 ...

简介


[*]该文档基于UE 4.26。
[*]该文档的目标是使读者对GAS有一个整体的概念,在阅读源码时更有头绪。
[*]不讨论网络复制,因为我是做单机的,对网络不够熟悉,可翻开其它教程。
GAS(Gameplay Ability System)是虚幻自带的一个插件,是一个角色技能系统框架。该插件默认是关闭的,如需使用则在Plugins中打开该插件。
如果你的游戏中需要较为复杂的技能系统,则可以考虑使用这个插件,GAS具有以下特性:

[*]技能(Ability)可具有等级、消耗、冷却等,可给予(Give)或移除(Remove),适合构建RPG和MOBA类等游戏的角色技能。
[*]GAS是基于C++的,配合蓝图设计技能(GameplayAbiltiy)和效果(GameplayEffect)。但纯蓝图项目最好不要使用,因为不能扩展。
[*]完善的网络复制,可用于联机游戏。
[*]GAS是一个BETA版的插件,在未来可能会有较大的修改。不过目前的插件功能足够完善和强大,堡垒之夜(Fortnite)中使用的正是GAS。
GAS中的关键类

我们从一个常见的技能出发,看一下技能系统究竟需要承担那些功能。


由此可见,技能系统需要处理主要有:技能的伤害消耗等数据、技能之前互斥关系、动画粒子声音等效果、释放来源和目标、Buff状态。
GAS的重要功能有以下几个关键类承担:

[*]AbilitySystemComponent(ASC)
技能系统组件AbilitySystemComponent是整个GAS的核心,用于管理各种技能和处理技能系统的所有交互。该组件附加在需要拥有技能的角色上,并可以把技能赋予角色。

[*]GameplayTag
游戏性标签GameplayTag是用于标记、描述Ability和Effect等游戏对象,相当于它们的ID。GameplayTag的内部实现基于虚幻的FName字符串,因此具有高效的查询性能。GameplayTag不仅能用于技能系统,也可以在其它任何地方使用,当需要层级标签的时候。



[*]GameplayAbility(GA)
技能GameplayAbility是角色可以使用的能力,比如跳跃、攻击、火球术、次元斩等。创建不同的技能是GAS的一个主要工作。在GA中可以触发不同的技能任务(AbilityTask),它们承担了诸如播放动画、角色移动等持续一段时间的功能。

[*]GameplayEffect(GE)
游戏性效果GameplayEffect相当于GAS中的Buff类,用于修改各种数值,一般通过改变自己或目标的属性值和标签(GameplayTag)来实现。比如附加伤害、回血、光环、Buff/Debuff等。技能的消耗和冷却通常也是用GE实现。属性集AttributeSet是表示Actor各种属性值的集合,保存在ASC中,是GE的主要作用目标。

[*]GameplayCue
游戏性提示GameplayCue类似于GAS中的通知事件,用于触发外部事件,比如播放粒子特效、声音等。
使用GAS

如果需要深入使用GAS,翻看插件源码的步骤是避免不了的。
基本步骤:

[*]启用Gameplay Abilities插件



[*]在项目的Build.cs文件中添加依赖模块



[*]为角色添加AbilitySystemComponent组件
[*]添加GameplayTags,制作AttributeSet、GameplayAbility、GameplayTask、GameplayEffect等,丰富技能库
Action RPG

Action RPG是虚幻提供的一个示例项目,该项目展示了GAS的详细用法,本文档中的各种示例也以该项目为参考。可在“Epic Games Launcher-学习-Games”中下载该项目进行探索和学习。

KaaPexei 发表于 2021-12-1 08:30

Build.cs文件中添加依赖模块后,导入技能头文件时一直报错无法找到,咋办?

franciscochonge 发表于 2021-12-1 08:37

编辑器外面右键.uproject文件,选择重新生成VS文件试一试
页: [1]
查看完整版本: 一、UE4技能系统GAS(GameplayAbilitySystem)新手教程 ...