- Home /
Lower volume when another audio source plays
I have two audio sources:
Audio source 1: Plays the background music.
Audio source 2: Plays some guiding speech OnTriggerEnter on a game object.
I want to lower source 1's volume just before source 2 plays and then return the volume back to normal when source 2 is done playing. Lowering the sound is easy but getting it to return back to normal at the right time is a problem. Here is what I've tried
Player.js:
var one_bg_sound : AudioSource;
var two_guide_sound : AudioSource;
function OnTriggerEnter (other : Collider) {
// Lower background sound on collision
one_bg_sound.volume = 0.25;
// Play 4 seconds long clip
two_guide_sound.Play();
// After 4 seconds return the background sound to normal
Camera.ResetBgAudioInSeconds( one_bg_sound, 4 );
}
Camera.js:
static function ResetBgAudioInSeconds( audioSource: AudioSource, secs: int ) {
Debug.Log( "Reset music volumn in seconds:" + secs );
yield WaitForSeconds ( secs );
Debug.Log( "Music volume reset" );
audioSource.volume = 1;
}
The problem is: The ResetBgAudioInSeconds doesn't execute unless I remove the "yield" line. What am I doing wrong?
Answer by kevork · Oct 10, 2011 at 03:32 PM
Yield isn't working because it is contained in a static function.
Your answer
Follow this Question
Related Questions
Increase the volume of sound source past limit? 1 Answer
Audio slider for multiple scenes. 2 Answers
lower volume on audio clip C# 1 Answer
Menu question 1 Answer
How does SetDensity find volume, and how can I get it? 1 Answer