Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Color and size over lifetime
📖 Scenario: You are creating a simple particle effect in Unity. Each particle changes its color and size as it lives. This makes the effect look more natural and interesting.
🎯 Goal: Build a Unity script that changes a particle's color and size smoothly over its lifetime.
📋 What You'll Learn
Create a Unity script with a ParticleSystem component reference
Define color and size gradients over the particle lifetime
Apply these gradients to the particle system's main module
Print confirmation that the setup is complete
💡 Why This Matters
🌍 Real World
Particle effects like fire, smoke, or magic spells often change color and size over their lifetime to look realistic.
💼 Career
Game developers and interactive media creators use these techniques to make engaging visual effects.
Progress0 / 4 steps
1
Set up the ParticleSystem reference
Create a public variable called particleSystem of type ParticleSystem inside a new C# class called ColorSizeOverLifetime.
Unity
Hint
Use public ParticleSystem particleSystem; inside the class.
2
Create color and size gradients
Inside the ColorSizeOverLifetime class, create two public variables: colorGradient of type Gradient and sizeCurve of type AnimationCurve.
Unity
Hint
Use public Gradient colorGradient; and public AnimationCurve sizeCurve;.
3
Apply color and size over lifetime
In the Start() method, get the colorOverLifetime and sizeOverLifetime modules from particleSystem. Set colorOverLifetime.color to colorGradient and sizeOverLifetime.size to sizeCurve.
Unity
Hint
Use particleSystem.colorOverLifetime and particleSystem.sizeOverLifetime modules and enable them.
4
Print confirmation message
Add a Debug.Log statement inside Start() that prints "Color and size over lifetime set!".
Unity
Hint
Use Debug.Log("Color and size over lifetime set!"); inside Start().
Practice
(1/5)
1. What does the ColorOverLifetime module do in Unity's Particle System?
easy
A. It adjusts the size of particles instantly.
B. It changes the color of particles smoothly as they age.
C. It controls the speed of particles over time.
D. It sets the initial color of particles only.
Solution
Step 1: Understand the purpose of ColorOverLifetime
The ColorOverLifetime module is designed to modify particle colors gradually as they live.
Step 2: Compare options with module function
Only It changes the color of particles smoothly as they age. correctly describes this smooth color change over particle lifetime.
Final Answer:
It changes the color of particles smoothly as they age. -> Option B
Quick Check:
ColorOverLifetime = Smooth color change [OK]
Hint: ColorOverLifetime changes colors gradually over particle life [OK]
Common Mistakes:
Confusing ColorOverLifetime with initial color setting
Thinking it controls size or speed
Assuming it changes color instantly
2. Which of the following is the correct way to enable the SizeOverLifetime module in a Unity Particle System script?
easy
A. particleSystem.sizeoverlifetime.enabled = true;
B. particleSystem.SizeOverLifetime.enabled = true;
C. particleSystem.sizeOverLifetime.enabled = true;
D. particleSystem.sizeOverLifetime.enable = true;
Solution
Step 1: Check correct property casing and spelling
Unity uses camelCase for properties, so sizeOverLifetime is correct.
Step 2: Verify property names and boolean flags
The property to enable is enabled, not enable.
Final Answer:
particleSystem.sizeOverLifetime.enabled = true; -> Option C
Quick Check:
Correct casing and property name = particleSystem.sizeOverLifetime.enabled = true; [OK]
Hint: Use camelCase and 'enabled' property to activate modules [OK]
Common Mistakes:
Incorrect capitalization of 'sizeOverLifetime'
Using 'enable' instead of 'enabled'
Misspelling the module name
3. Given this code snippet in Unity:
var ps = GetComponent<ParticleSystem>();
var col = ps.colorOverLifetime;
col.enabled = true;
col.color = new ParticleSystem.MinMaxGradient(Color.red, Color.blue);
What will happen to the particles' colors over their lifetime?
medium
A. Particles will smoothly change color from red to blue as they age.
B. Particles will stay red throughout their life.
C. Particles will instantly switch from red to blue at half their lifetime.
D. Particles will not change color because the gradient is invalid.
Solution
Step 1: Analyze the colorOverLifetime setup
The code enables colorOverLifetime and sets a gradient from red to blue.
Step 2: Understand gradient effect on particles
This gradient causes particles to smoothly transition from red at birth to blue at death.
Final Answer:
Particles will smoothly change color from red to blue as they age. -> Option A
Quick Check:
Gradient red to blue = smooth color change [OK]
Hint: Gradient from color A to B means smooth transition over lifetime [OK]
Common Mistakes:
Assuming color stays constant
Thinking color changes instantly
Believing gradient is invalid without alpha
4. Identify the error in this Unity C# code for SizeOverLifetime:
var ps = GetComponent<ParticleSystem>();
var size = ps.sizeOverLifetime;
size.enabled = true;
size.size = new ParticleSystem.MinMaxCurve(1.0f, 0.0f);
medium
A. MinMaxCurve cannot have start value greater than end value.
B. The size curve should be assigned using a curve, not MinMaxCurve.
C. The MinMaxCurve constructor parameters are reversed; it should be (0.0f, 1.0f).
D. There is no error; the code shrinks particles from size 1 to 0 correctly.
Solution
Step 1: Review MinMaxCurve usage for size
MinMaxCurve can define a linear change from start to end size; start larger than end is valid.
Step 2: Confirm code logic
The code enables sizeOverLifetime and sets size to shrink from 1.0 to 0.0, which is correct.
Final Answer:
There is no error; the code shrinks particles from size 1 to 0 correctly. -> Option D
Quick Check:
Shrinking size from 1 to 0 is valid [OK]
Hint: Start size can be bigger than end size for shrinking effect [OK]
Common Mistakes:
Thinking start value must be less than end value
Confusing MinMaxCurve with animation curve
Assuming reversed parameters cause error
5. You want particles to start fully transparent, become fully visible halfway through their life, then fade out again by the end. How can you set this using ColorOverLifetime in Unity?
hard
A. Use a gradient with alpha keys at 0 (0), 0.5 (1), and 1 (0) to control transparency over lifetime.
B. Set the start color alpha to 0 and end color alpha to 1 in ColorOverLifetime gradient.
C. Enable SizeOverLifetime and animate size from 0 to 1 to 0 to control visibility.
D. Use a single color with alpha 1 and animate particle emission rate.
Solution
Step 1: Understand alpha control with ColorOverLifetime
Alpha keys in gradient let you control transparency at different life points.
Step 2: Set gradient alpha keys for fade in and fade out
Alpha 0 at start, 1 at half life, and 0 at end creates the desired transparency effect.
Final Answer:
Use a gradient with alpha keys at 0 (0), 0.5 (1), and 1 (0) to control transparency over lifetime. -> Option A
Quick Check:
Alpha keys control transparency fade in/out [OK]
Hint: Use alpha keys in gradient for fade in and fade out [OK]
Common Mistakes:
Only setting start and end alpha without middle key