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
Audio mixer
📖 Scenario: You are creating a simple audio mixer in Unity to control the volume of different sound channels in a game. This will help players adjust music and sound effects separately.
🎯 Goal: Build a Unity script that sets up audio sources for music and sound effects, allows volume control through variables, and applies these volumes to the audio mixer.
📋 What You'll Learn
Create two AudioSource variables named musicSource and sfxSource
Create two float variables named musicVolume and sfxVolume with initial values
Write a method ApplyVolumes() that sets the volume of both audio sources using the volume variables
Print the current volume levels using Debug.Log
💡 Why This Matters
🌍 Real World
Game developers often need to control different audio channels separately to improve player experience.
💼 Career
Understanding how to manipulate audio sources and volumes is essential for roles in game development and interactive media.
Progress0 / 4 steps
1
Set up AudioSource variables
Create two public AudioSource variables called musicSource and sfxSource inside a class named AudioMixerController.
Unity
Hint
Declare the variables inside the class but outside any methods.
2
Add volume variables
Add two public float variables called musicVolume and sfxVolume with initial values 0.5f and 0.7f respectively inside the AudioMixerController class.
Unity
Hint
Initialize the float variables with the given values.
3
Create ApplyVolumes method
Write a public method called ApplyVolumes() inside AudioMixerController that sets musicSource.volume to musicVolume and sfxSource.volume to sfxVolume.
Unity
Hint
Define the method and assign the volume variables to the audio sources.
4
Print volume levels
Add a line inside ApplyVolumes() that prints the current music and sfx volumes using Debug.Log in the format: "Music Volume: {musicVolume}, SFX Volume: {sfxVolume}".
Unity
Hint
Use Debug.Log with an interpolated string to show the volumes.
Practice
(1/5)
1. What is the primary purpose of an AudioMixer in Unity?
easy
A. To write scripts for game logic
B. To create 3D models for the game
C. To control and manage multiple audio sources and their volumes
D. To design user interface elements
Solution
Step 1: Understand AudioMixer role
An AudioMixer is used to manage audio sources and control their volumes and effects.
Step 2: Compare options
Only To control and manage multiple audio sources and their volumes describes controlling and managing audio sources and volumes, which matches the AudioMixer's purpose.
Final Answer:
To control and manage multiple audio sources and their volumes -> Option C
Quick Check:
AudioMixer manages sounds = A [OK]
Hint: AudioMixer is about sound control, not visuals or scripts [OK]
Common Mistakes:
Confusing AudioMixer with UI or scripting tools
Thinking AudioMixer creates game models
Assuming AudioMixer handles game logic
2. Which of the following is the correct way to set a volume parameter named MasterVolume to -20 decibels in an AudioMixer called audioMixer?
easy
A. audioMixer.SetFloat("MasterVolume", "-20");
B. audioMixer.SetFloat("MasterVolume", -20);
C. audioMixer.SetFloat(MasterVolume, "-20");
D. audioMixer.SetVolume("MasterVolume", -20);
Solution
Step 1: Recall SetFloat syntax
The method SetFloat takes a string parameter name and a float value, like SetFloat("paramName", floatValue).
Step 2: Check each option
audioMixer.SetFloat("MasterVolume", -20); uses correct method name, parameter name as string, and float value -20. Others use wrong method name or wrong argument types.
Final Answer:
audioMixer.SetFloat("MasterVolume", -20); -> Option B
Quick Check:
SetFloat("param", float) = D [OK]
Hint: SetFloat needs parameter name string and float value [OK]
Common Mistakes:
Using SetVolume instead of SetFloat
Passing parameter name without quotes
Passing value as string instead of float
3. Given this code snippet in Unity:
AudioMixer mixer;
mixer.SetFloat("MusicVolume", -10f);
float volume;
mixer.GetFloat("MusicVolume", out volume);
Debug.Log(volume);
What will be printed in the console?
medium
A. Error
B. 0
C. 10
D. -10
Solution
Step 1: Understand SetFloat and GetFloat
SetFloat sets the parameter value; GetFloat retrieves it into the out variable.
Step 2: Trace the code
SetFloat sets "MusicVolume" to -10f, then GetFloat reads it into volume, so volume is -10.
Final Answer:
-10 -> Option D
Quick Check:
Set then Get returns same value = -10 [OK]
Hint: GetFloat returns the value set by SetFloat [OK]
Common Mistakes:
Assuming default 0 instead of set value
Confusing sign of the volume value
Expecting an error from GetFloat
4. What is wrong with this code snippet that tries to mute an AudioMixer group by setting its volume to -80?
A. The parameter name MusicVolume should be a string in quotes
B. The value -80f is too low and causes an error
C. SetFloat cannot be used to change volume
D. AudioMixer must be initialized with new before use
Solution
Step 1: Check parameter name usage
SetFloat requires the parameter name as a string in quotes, but MusicVolume is used without quotes here.
Step 2: Validate other parts
-80f is valid for volume; SetFloat is correct method; AudioMixer is usually assigned, not always newed.
Final Answer:
The parameter name MusicVolume should be a string in quotes -> Option A
Quick Check:
Parameter names must be strings = C [OK]
Hint: Parameter names always need quotes in SetFloat [OK]
Common Mistakes:
Omitting quotes around parameter names
Thinking volume values below -80 cause errors
Believing SetFloat can't change volume
5. You want to smoothly fade out the master volume of an AudioMixer over 3 seconds in Unity. Which approach correctly applies this using SetFloat inside a coroutine?
hard
A. Gradually decrease a float from 0 to -80 and call audioMixer.SetFloat("MasterVolume", value) each frame
B. Set audioMixer.SetFloat("MasterVolume", -80) once and wait 3 seconds
C. Use audioMixer.SetFloat("MasterVolume", 80) to increase volume over time
D. Change the AudioSource volume property instead of AudioMixer
Solution
Step 1: Understand fading out volume
Fading out means gradually lowering volume from 0 dB (normal) to a low value like -80 dB over time.
Step 2: Check each option
Gradually decrease a float from 0 to -80 and call audioMixer.SetFloat("MasterVolume", value) each frame correctly describes decreasing volume gradually and calling SetFloat repeatedly. Set audioMixer.SetFloat("MasterVolume", -80) once and wait 3 seconds sets volume once, no fade. Use audioMixer.SetFloat("MasterVolume", 80) to increase volume over time increases volume incorrectly. Change the AudioSource volume property instead of AudioMixer changes AudioSource, not AudioMixer.
Final Answer:
Gradually decrease a float from 0 to -80 and call audioMixer.SetFloat("MasterVolume", value) each frame -> Option A
Quick Check:
Fade out = gradual decrease with SetFloat [OK]
Hint: Fade volume by changing parameter gradually in coroutine [OK]