[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。
可以在属性变化前 PreAttributeChangePostGameplayEffectExecute 处理相关的逻辑,可以通过委托的方式绑定属性变化。

  • 属性改变前: PreAttributeChange
  • 属性改变完成后: PostGameplayEffectExecute

# 代码层面

需要自定义一个 AttributeSet

# 实操

安装 GameAbility 插件

注册插件