Let’s say, my GameplayEffect temporarily adds +500HP for 10 seconds and I want to update the GUI accordingly.
There is PostGameplayEffectExecute() which could be a place to broadcast AttributeChanged events (The approach I see in ARPG sample project). However, I did some test, temporary GameplayEffect like " adds +500HP for 10 seconds" will add to the aggregator stack and do not change the base value, which means it will not trigger PostGameplayEffectExecute().
There is PreAttributeChange() and PreAttributeBaseChange() which would be called when the attribute changes. However, its doc said:
PreAttributeChange/PreAttributeBaseChange: called just before modifications to an Attribute. They are intended to enforce rules on the Attribute’s value, such as “Health must be between 0 and MaxHealth”, and should not trigger in-game reactions to Attribute changes.
So where do I broadcast for Attribute value change?
Also, why is there no PostAttributeChange()/PostAttributeBaseChange?