0%

GAS插件基本概念

GAS技能系统基本概念

GAS技能系统基本概念

参考:[UnrealOpenDay2020]深入GAS架构设计 | EpicGames 大钊哔哩哔哩bilibili

词汇表

UAbilitySystemComponent - ASC ——只有拥有ASC的Actor才有释放管理技能的能力

UGameplayAbility - GA ——一个技能的主体逻辑

UGameplayEffect - GE ——一个技能的效果(属性的修改,动作的触发)

UGameplayCueNotify - GC ——特效部分(一次性特效、持续性特效)

FGameplayAttribute - Attribute ——一个游戏属性(生命值等等),多个组成AttributeSet挂载在Actor上

FGameplayTag - Tag ——给类和对象挂标签,层次化搜索

UGameplayTask - Task ——异步操作任务

FGameplayEventData - Event ——游戏事件(ASC之间)

pZkgcnA.png

核心架构

pZkgftf.png

  • Editor(绿色)主要是实现UI部分

 

Tag

pZkgq7q.png

本质是轻量化的FName、内存中组织为树状结构(UGameplayTagsManager),模式为A.B.C代表树状的嵌套结构。在编辑器中的ProjectSettings左边的ProjectTags可找到全局定义的所有Tags。

GameplayAttribute

  • float BaseValue——初始值
  • float CurrentValue——被buff效果叠加后的值

方便进行回滚

GameplayEffect

pZk2njH.png

  • 修改属性——统一的流程途径修改GA,方便统一进行回调
  • 流程效果——修改属性的逻辑,Tag增减(眩晕、沉默),给与能力

GameplayCue

pZk2Y8S.png

可以在GE里配置触发,也可以在GA里手动进行调用触发

  • Static:一次性效果(爆炸)
  • Actor:持久(火焰)

GameAbility

pZk2dDs.png

  • 不要把基础移动、射线检查、UI交互当成能力
  • 表示专门用来触发的什么事件

GameplayTask

pZkRpPf.png

  • 执行异步任务(等待蒙太奇、等待一段时间)
  • 框架中已经有一系列预制好的Task

GameplayEvent

pZkRgFP.png

  • 手动触发Actor之间的游戏时间
  • 靠Tag进行识别,可以携带Payload数据(如子弹命中后的回调)

AbilitySystemComponent

cde311fe-5bfb-4494-97ae-336100b2b8c6.png

  • 运行核心、管理协调
  • 技能系统的实质,就是Actor上的ASC向另一个Actor的ASC上相互增删Effect、触发Cue、贴标签的流程。

总结

 

6c846bdf-77ea-4db3-918c-741b25b60860.png