Quick answer: Call particles.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear) for instant clear including sub-emitters. Default Stop only stops new emissions.

A fire effect’s emitter is stopped when the fire goes out. The visible flames persist for 2 seconds after stop. You wanted instant clear. The default Stop behavior keeps existing particles alive until their lifetimes expire.

Stop Behaviors

ParticleSystem.Stop has two parameters and two enum values:

For Instant Disappearance

fireParticles.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);

Stops emitting, clears all existing particles, and applies recursively to sub-emitters. The effect vanishes immediately.

For Natural Fadeout

fireParticles.Stop(true, ParticleSystemStopBehavior.StopEmitting);

Stops spawning new particles; existing particles complete their lifetimes. Used when you want the effect to fade naturally over its tail length.

Separate Clear

fireParticles.Clear(true);   // withChildren
fireParticles.Stop();

Manually clearing then stopping is equivalent to Stop with StopEmittingAndClear. Use when you need different conditions for each step.

Restart Pattern

For pooling: completely reset an emitter before re-use:

particles.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
particles.Play(true);   // withChildren

Cleans the system, starts fresh. Reliable across reuse cycles.

Verifying

Trigger Stop. With StopEmittingAndClear, the effect disappears within 1 frame. Without, existing particles continue until their lifetime expires. Capture both for comparison; pick the right behavior for your use case.

“Stop has two arguments. The second one matters: StopEmittingAndClear instead of the default StopEmitting.”

For pooled effects, always Stop(true, StopEmittingAndClear) on return-to-pool — eliminates leftover particle artifacts on next play.