[toc] [中文直播] 第 31 期|GAS 插件介绍(入门篇) 伍德 大钊
# GAS 提供了哪些功能
- 实现了带有消耗和冷却功能的角色技能
- 处理数值属性
- 应用状态效果
- 应用游戏标签
- 生成特效和音效
- 完整的网络复制、预测功能
# ASC Ability System Component
Ability System Component (ASC) 是整个 GAS 的基础组件 ASC 本质上是一个 UActorComponent, 用于处理整个框架下的交互逻辑,包括 使用技能
(GameokatAbility)、包含 属性
(AttributeSet)、处理各种效果 (GameplayEffect)。
所有需要应用 GAS 的对象 (Actor),都必须拥有 GAS 组件
拥有 ASC 的 Actor 被称为 ASC 的 OwnerActor
,ASC 实际作用的 Actor 叫做 AvatarActor
ASC 可以被赋予某个角色 ASC, 也可以被赋予 PlayerState (可以保存死亡角色的一些数据)
AbilitySystem 组件
# Gameplay Tags
这本身是 UE 的一个功能
通过 GameplayTagManager 来进行注册
Gameplay Tags 本身是存在父子级的关系
# Gameplay Ability
Gameplay Ability (GA) 标识了游戏中的一个对象 (Actor) 可以做的 行为或技能
能力 (Ability) 可以是 普通攻击
或者 吟唱技能
,可以是角色被 击飞倒地
,还可以是 使用某种道具
, 交互某个物体
,甚至 跳跃
、 飞行
等角色行为也可以是 Ability
Ability 可以被赋予对象或从对象 ASC 中移除,对象同时可以激活多个 GameplayAbility
# Gameplay Effect
Gameplay Effect (GE) 是 Ability 对自己或他人 产生影响
的途径
GE 通常可以理解为我们游戏中的 buff。比如增益 / 减益效果 (修改属性)。
但是 GAS 中的 GE 也更加 广义
,释放技能时候的 伤害结算
,石甲特殊效果的 控制
、 霸体
效果 *(修改 GameplayTag) 都是通过 GE 来实现的
GE 相当于一个可以配置的 数据表
,不可以有逻辑
# Attribute Set
AttributeSet 负责定义和持有属性,并且管理属性的
变化
,包括网络同步
。
需要在 Actor 中被添加为成员变量,并注册到 ASC (C++) 中。
一个 ASC 可以拥有一个或多个(不同的)
AttributeSet,一次可以角色共享一个很大的 Attribute Set, 也可以每个角色按需添加 Attribute Set。
可以在属性变化前PreAttributeChange
后PostGameplayEffectExecute
处理相关的逻辑,可以通过委托的方式绑定属性变化。
- 属性改变前: PreAttributeChange
- 属性改变完成后: PostGameplayEffectExecute
# 代码层面
# 实操
安装 GameAbility 插件
注册插件