- Home /
Audio won't play during for loop
I am trying to write a script that displays all the bonuses the player has just earned one by one, two per second, with a sound effect triggered every time a new bonus is revealed. Instead, the script plays no sound at all while the bonuses are being revealed and then plays the sound effect once when all the bonuses disappear. I have no idea why this is happening. Here's the code:
public AudioSource bonus;
void ShowBonuses(){ //called repeatedly from OnGUI
int startX = Screen.width/2 - 200;
int startY = Screen.height - 200;
if(Time.time - scoredAt < 4){ //sound finally plays when this evals false
for(int i = 0; i < scoreTexts.Length; i++){
if(Time.time - scoredAt >= (float)i/2){ // bonuses appear 1 by 1.
GUI.Label(new Rect(startX, startY, 100, 50), scoreTexts[i]);
startY -= 50;
bonus.Play(); //doesn't play!
}
}
}
}
any help would be greatly appreciated.
Cory
Answer by Chronos-L · Apr 04, 2013 at 11:08 AM
I setup a scene using this code:
using UnityEngine;
using System.Collections;
public class UIAudio : MonoBehaviour {
public AudioSource bonus;
public float scoredAt = 0;
public string[] scoreTexts;
void OnGUI() {
ShowBonuses();
}
void ShowBonuses(){ //called repeatedly from OnGUI
int startX = Screen.width/2 - 200;
int startY = Screen.height - 200;
if(Time.time - scoredAt < 4){ //sound finally plays when this evals false
for(int i = 0; i < scoreTexts.Length; i++){
if(Time.time - scoredAt >= (float)i/2){ // bonuses appear 1 by 1.
GUI.Label(new Rect(startX, startY, 100, 50), scoreTexts[i]);
startY -= 50;
bonus.Play(); //doesn't play!
}
}
}
}
}
I heard it play, then after a short while, it just keep on playing. I can heard it clearly. Make sure you do all of the following (For #4 or #5, you can do either one of them):
Assign the bonus audioSource
The audioSource has a audio clip assigned to it
Make sure that the bonus-audioSource->volume is not 0
Make sure your camera has a audio listener (this is the default) or you have one audio listener attached to a character
If the clip is a 3D sound, make sure that your audiolistener (most probably your camera) is in range of the audio-source 's volume zone (it is drawn in a light-blue color),
If the clip is a 3D sound, increase the audio-source volume zone ( 3D sounds setting -> Min Distance ) until your audio listener is within range
Your answer
![](https://koobas.hobune.stream/wayback/20220613095648im_/https://answers.unity.com/themes/thub/images/avi.jpg)