写在前面:
聚合器(FAggregator) :可以理解为一个Attribute属性,在GE有对此属性有修改时会创建一个,里面主要储存了属性的BaseValue,所有对此属性修改的信息。
一,GE的应用流程(暂时不考虑预测相关)
以给自身Apply一个GE为例(ApplyTarget最终也是用Target的AbilitySystemComponent调用目标的ApplytoSelf,只是在MakeEffectContext的时候有所区别)
ApplyGameplayEffectSpecToSelf为入口:
检查网络端或者是否有合法的预测key:
Tag配置检查,Modify的属性有效性配置检查,自定义应用条件检查(太长,感兴趣自己看一下):
如果上述条件都没有问题,且不算Instant类型的GE,那么就会走到ActiveGameplayEffects的ApplyGameplayEffectSpec;这个函数就是非Instant类型的GE生效的函数,里面包括快照属性,计算属性修改更新,Duration计时,GE层数叠加的核心操作。