Unity Particle System tutorial
There are many different things you can use the Unity Particle System for. Such as creating effects for fire, smoke, explosion, spark’s dust rain, snow and many other things. Whether it be magic effects or effects for weapons and more.
Instead of having to make each individual particle yourself. The Particle System can allow you to do all of this with many particles at once. You are able to tell it how you want your particles to spawn, how they move, render, color and respawn. Allowing for many different effects.

What Is the Unity Particle System?
The Unity Particle System is able to spawn particles within your Unity scene. You can control each particles properties such as position, speed, lifetime, size, color and rotation.
You can think of a particle as maybe a spark or piece of smoke. When you combine many particles together you can create many different effects.
You could have hundreds of particles spawning from an explosion traveling at high speeds and changing color and size. Until they reach there lifetime and destroyed.
All of this can be done using the Particle System.
Why Should You Use the Unity Particle System?
As you can imagine having effects in your game can enhance the gameplay experience. Your gun would feel more satisfying if it had effects attached to it when shooting. Maybe even add smoke and dust to your environment.
You can do all of this with the Unity Particle System.
- Here are some examples of what you can use it for:
- Fire
- Smoke
- Explosion
- Spark’s
- Magic
- Rain/Snow
- Dust
- Splash
- Blood
- Muzzle Flash
- Environmental effects
- Pick ups
As you can see the Particle System is very versatile and can be used for many things.
How to Make a Particle System
To make a particle system in unity is quite simple.
In your Unity Editor you can create a particle system by going to Game Object > Particle System. This will spawn a new game Object in your scene with the Particle System script attached.
When you have the particle system selected you will see all of the options available in your inspector.
Below is a quick reference guide to help you get started with creating and configuring a particle system in Unity.
| Action | Location | Configuration | Tips |
| Create Particle System | GameObject > Particle System | Default system added | Explore Inspector settings |
| Select Modules | Particle System Inspector | Choose required modules | Start with basic modules like Main and Emission |
| Adjust Lifetime | Main Module | Short for sparks; Long for smoke | Randomize for natural effects |
| Set Start Speed | Main Module | High for explosions; Low for smoke | Combine with Velocity module |
With these basic steps, you’re ready to experiment further with particle configurations.
You will have many different modules to play with. Each module will let you edit different aspects of your particle. Some you may need and others you may not.
By default when you create a particle system it will already be doing something. So feel free to play around with the settings.
Particle System Modules
As stated before you have many different modules you can use. Each one serving there own purpose.
- Here are some of the main ones you should know about:
- Main
- Emission
- Shape
- Velocity over LifeTime
- Limit Velocity over LifeTime
- Force over LifeTime
- Color over LifeTime
- Size over LifeTime
- Rotation over LifeTime
- Texture Sheet Animation
- Renderer
Again you don’t need all of these modules for every effect. Some effects may only require the Main, Emission, Shape and Renderer module.
You can go as in depth as you want with particle systems by using all of the modules.
Main Module
There are many things you can edit within the Main module.
You can edit your particles lifetime, start speed, start size, start rotation and start color.
If your trying to make spark’s you may want to shorten your particles lifetime and give them a higher start speed.
Where as if you were trying to make smoke you may want to lengthen your particles lifetime and lower their start speed.
There are many options available to you in the Main module.
Emission Module
The Emission module allows you to control how many particles you want to emit.
You can emit particles over time or emit them in bursts.
Maybe you want to emit particles over time to simulate fire.
Or you could emit a large amount of particles at one point to create an explosion.
Playing around with the amount of particles you emit is important.
Shape Module
The Shape module allows you to control where your particles will emit from.
You can emit particles from many different shapes.
Such as a cone if your trying to simulate fire. Or maybe a sphere if your trying to make an explosion.
You could even use a plane or cube to create effects for rain or dust.
Play around with the Shape module and you will find many useful things you can do with it.
Particle Speed
Start speed will control how fast your particles are moving when they spawn.
If your trying to make an explosion you may want to increase your start speed. So the particles can move away from the center.
If your making smoke you may want to decrease your start speed. So the particles can float upwards slower.
You can also play around with this setting with other modules. Such as using the velocity module to control how the particles move over their lifetime.
Rotation Over Lifetime
You can also make your particles rotate while they are alive.
This could be useful if your trying to make leaves or pieces of debris.
You can set your rotation to a random value. So each particle doesn’t have the same rotation.
Helpful if your using the same texture for your particles.
Velocity and Force Modules
You can use the Velocity over Lifetime module to control how your particles move over there lifetime.
Same with the Force over Lifetime module. You can apply force to your particles as they move through your scene.
You can use these modules to make your smoke float upwards. Or make your leaves fall downwards with the wind.
There are many things you can do with these modules.
Making a Fire Effect
To make a fire effect you can use many of the particle system modules.
You want to use a shape that fits the bill for fire. And set your particles lifetime to a shorter value.
Start your particles size small and use the Size over Lifetime module to make them bigger over there lifetime.
Use a gradient for your Color over Lifetime module. You can play around with the color and alpha values to create your fire.
You can also add some randomness to your velocity module. So each particle doesn’t take the same path.
Once you have these set you can play around with the particle texture and material to get your desired result.
Making a Smoke Effect
When making a smoke effect you may want to use a longer lifetime for your particles.
Set your start speed to a lower value and use the Size over Lifetime module to make your particles bigger over there lifetime.
Use your Shape module to give some randomness to your particles. You can also use the velocity module to help push your smoke in a certain direction.
Once again play around with the particle texture and material to get your desired result.
Making an Explosion Effect
To make an explosion effect you can use multiple particle systems.
One particle system can be your explosion and you can have another particle system emitting spark’s and smoke.
Make sure to set your particles lifetime to a shorter value and give them a high start speed.
Play around with the color and size modules to get your desired result.
You can also use the velocity module to push your particles outwards.
There are many ways you can create an explosion effect. Play around with different modules and you will find what works best for you.
Particle System Renderer
You can use the Renderer module to control how your particles look.
You can render your particles as billboards or use different methods to render your particles.
Billboard particles will always face the camera. Which can be helpful if your trying to create effects for fire and smoke.
There are other methods you can use as well. Just play around and see what works for you.
Using Particles in Your Game
Not only can you use particles to enhance your environment. But you can also use them to show information to your player.
You can use particles to show when a player takes damage. Or maybe when there weapon is ready.
You can use them to show when something can be picked up or an area is dangerous.
There are many things you can do with particles in your game.
Particle System Optimization
Having too many particles in your scene can hurt your games performance.
Try to keep your particles lifetime as low as possible. This will reduce the amount of particles in your scene.
You can also decrease the amount of particles your emitting per second.
Make sure to test your game on the hardware your targeting. What may run good on your computer may not run as good on a mobile device.
Also Check :
FAQ:
1. Why are my particles visible in the Scene view but invisible in the Game view?
-
Missing Material/Shader: Check the Renderer module at the bottom of the particle inspector. If no material is assigned, or if it uses an incompatible pipeline shader (e.g., a Built-in shader used in URP/HDRP), the particles won’t render or will show up as pink squares.
-
Camera Culling Mask: Ensure the GameObject’s Layer is included in your Main Camera’s Culling Mask settings.
-
Sorting Order: If you are building a 2D game or UI effect, update the Sorting Layer or Order in Layer in the Renderer module so the particles render in front of background sprites or UI elements.
2. How do I instantiate and destroy a particle effect via C# script?
// Instantiate the particle effect at a target position
GameObject fxInstance = Instantiate(particlePrefab, transform.position, Quaternion.identity);
// Fetch the ParticleSystem component and destroy the object after its lifetime ends
ParticleSystem ps = fxInstance.GetComponent<ParticleSystem>();
float totalDuration = ps.main.duration + ps.main.startLifetime.constantMax;
Destroy(fxInstance, totalDuration);
Tip: For performance-critical games, avoid constantInstantiateandDestroycalls—use Object Pooling instead and toggle particle emission withps.Play()andps.Stop().
3. What is the difference between Particle System (Shuriken) and VFX Graph in Unity?
-
Particle System (Shuriken): CPU-based system ideal for small-to-medium particle counts (hundreds to low thousands). It is easy to set up out-of-the-box, works across all platforms (including mobile and WebGL), and integrates directly with Unity’s C# scripting and physics system.
-
VFX Graph (Visual Effect Graph): GPU-based system designed for high-density particle effects (hundreds of thousands or millions of particles). It runs entirely on the GPU using node-based logic and is best suited for complex visual effects on PC, console, and high-end mobile devices.
4. How do I make particles follow a moving object or character?
-
Local: Particles move along with the parent transform (great for a glowing aura around a character or a burning torch).
-
World: Particles remain fixed at the position where they were spawned in world space (great for footstep dust trails, smoke stacks, or vehicle exhaust).
-
Custom: Allows you to align particle movement relative to a specific reference Transform component.
5. How can I assign a random texture or sprite to individual particles?
-
Enable the Texture Sheet Animation module.
-
Set the Mode to Sprites (or Grid if using a sprite sheet texture).
-
Add your sprites or assign the grid dimensions ($X$ and $Y$ tiles).
-
Change Frame over Time to Random Between Two Constants (e.g., between
0and the max frame index) to assign a random sprite to each spawned particle.
6. Why isn’t my particle system playing when re-enabling the GameObject?
SetActive(false)) while its particle system is running and later set it back to active, the particle system might not replay automatically if Play On Awake is unchecked or if the system ended in a paused/stopped state.OnEnable():private ParticleSystem ps;
private void Awake()
{
ps = GetComponent<ParticleSystem>();
}
private void OnEnable()
{
if (ps != null)
{
ps.Clear(); // Clear existing particles
ps.Play(); // Restart simulation
}
}

