Quick answer: Use Set Spawning to False instead of just Rate=0. Or Destroy the Particles instance after burst. Audit events for re-enables.
An explosion VFX uses Particles. Setting Rate to 0 after burst should stop emission, but particles keep appearing. Some hidden event reactivates it.
Set Spawning False
Particles → Set Spawning false
Definitively stops emission. Existing particles continue to live out their lifetimes, then disappear. Cleaner than Rate=0.
One-Shot Mode
For explosions/bursts, set Particles object to One-Shot mode. Spawn count fires once on creation/spawn, then stops automatically. No need to manually stop.
Destroy for Cleanup
Particles → Set Spawning false
Wait 2.0 seconds // let existing particles fade
Particles → Destroy
Graceful: stop new, let old finish, then remove. Saves memory long-term.
Find Re-Enable Events
Search project (Ctrl+F) for “Set Spawning true” or “Set Rate”. Audit each — if any fire continuously (Every Tick) under a condition that’s often true, you have your culprit.
Per-Frame Continuous Re-Set
Avoid event-sheet patterns like:
Every Tick:
Particles → Set Rate 10
This re-arms each frame. Move into one-time event (On created, On condition becomes true).
Verifying
Trigger explosion. Burst happens, particles fade out, no new ones spawn. Trigger many in sequence; previous bursts complete and clean up. Memory profile flat.
“Stop emission with Set Spawning false. Clean up with Destroy after fade. One-Shot for explosions saves all of this.”
For frequent VFX (e.g. enemy death), pool Particles objects rather than create/destroy each time — smoother frame rate, less GC.