Quick answer: Unreal logging “ticking after Destroy()” warning for actors you killed? Destroy() marks the actor pending-kill; the engine completes the current tick before fully removing it.
An actor calls Destroy on itself; the next frame triggers a warning because the tick group hasn’t cleared yet.
Destroy Is Asynchronous
Destroy queues actor removal at end of frame. Until then, the actor still ticks. IsActorBeingDestroyed / IsPendingKillPending tells you mid-tick.
Disable Tick on Destroy
SetActorTickEnabled(false);
Destroy();Disable tick before queueing destroy. Engine won’t tick a disabled actor; no warnings.
EndPlay for Cleanup
EndPlay is the canonical cleanup hook. Override and release resources here — runs before final destruction.
Avoid Self-Destroy in Tick
Destroying yourself from your own Tick is fragile. Queue via GetWorld()->GetTimerManager().SetTimerForNextTick — runs next frame, no in-tick weirdness.
Verifying
No tick-after-destroy warnings. Destroyed actors leave the world cleanly without log noise.
“Destroy is async. Disable tick first, do cleanup in EndPlay.”
If you find yourself tick-destroying often, refactor: spawn a manager that owns the actor and destroys from outside its own tick.