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.