Sorry to resuscitate this thread, but the issue is still present and this is the thread we endup when we search for this issue.
The problem is AGameplayCueNotify_Actor
are usually recycled after remove; that means they are not destroyed and keeps getting reused.
If you are relying on the bAutoDestroyOnRemove
setting to restart your effect that is NOT going to work, because this setting only makes AGameplayCueNotify_Actor
call GameplayCueFinishedCallback
which only ends up destroying the GC if UGameplayCueManager::GameplayCueActorRecycle < 0
.
Your options are:
- Reset the effect
On Active
inside theAGameplayCueNotify_Actor
- (C++) Override
AGameplayCueNotify_Actor::Recycle
to return false and prevent recycling - (C++) Override
AGameplayCueNotify_Actor::ReuseAfterRecycle
to reset the effect - Disable recycling in the
UGameplayCueManager
- Destroy the actor
On Remove
inside theAGameplayCueNotify_Actor
to prevent recycling. I would not recommend this because the Gameplay Cue systems calls a few more methods after theOn Remove
handling and it might cause crashes.
I think 1 & 3 are the best because they keep the recycling logic which is a nice optimization to have. The best of the best might to make ReuseAfterRecycle
call OnReset
Blueprint event so
the reset can be seemlessly implemented in blueprint.