What's the proper way to reference and destroy gameplay cue notify actors?

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:

  1. Reset the effect On Active inside the AGameplayCueNotify_Actor
  2. (C++) Override AGameplayCueNotify_Actor::Recycle to return false and prevent recycling
  3. (C++) Override AGameplayCueNotify_Actor::ReuseAfterRecycle to reset the effect
  4. Disable recycling in the UGameplayCueManager
  5. Destroy the actor On Remove inside the AGameplayCueNotify_Actor to prevent recycling. I would not recommend this because the Gameplay Cue systems calls a few more methods after the On 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.

4 Likes