UE GAS笔记

UE GAS笔记

核心概念

状态表示:
状态由两部组成:Attribute、GameplayTag。

  • Attribute代表数值类状态,例如移动速度、攻击力。代码定义如图所示: 在这里插入图片描述
    BaseValue代表永久改变的部分,CurrentValue代表当前最新的值,是由基础值加上buff改变值。瞬时或周期性的GE会直接修改BaseValue,持续性GE则是在BaseValue的基础上给出影响值计算出CurrentValue。属性修改具体实现:通过Aggregator计算所有Modifier的修改,然后进行最大最小值的限制再设置给CurrentValue。一个FGameplayAttribute 对应一个 FAggregator。具体可以细看UAbilitySystemComponent.ActiveGameplayEffects.AttributeAggregatorMap相关代码。
  • GameplayTag相较于传统用枚举值来表达状态有一个好处:Tag具备分门别类,可以使用父Tag代表一组Tag。

GameplayEffect:
可以理解成Buff,修改状态。简写GE。GE里可以通过配置Modifiers来修改Attribute,配置GrantedTags则可以在GE的所有者身上添加Tag。另外GE还可以配置:GE堆叠规则、赋予技能等。

GameplayAbility:
技能,可以添加GE、播放蒙太奇、发送事件、等待事件触发。可以通过Tag实现技能间的打断、互斥、免疫等。以及输入的绑定。
重要函数介绍:

  • CanActivateAbility() - 判定技能是否可以激活。
  • TryActivateAbility() - 尝试激活技能。会先调用CanActivateAbility()进行判断。会处理网络同步以及技能预测相关逻辑。
  • ActivateAbility() - 技能逻辑写在这里,子类需要override此函数。
  • CommitAbility() - 应用技能消耗(技能冷却、法力消耗…)。别忘记在ActivateAbility()里调用此函数。
  • CancelAbility() - 从外部中断技能
  • EndAbility() - 技能结束自身,表示技能执行完毕。

UAbilitySystemComponent
角色身上的技能大管家。主要功能涉及到:属性集的管理、当前角色拥有的技能、激活中的技能、挂载了哪些GE、GameplayTag的管理。
放上大钊总结的图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值