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*);*
  •  			startY -= 50;*
    
  •  			bonus.Play(); //doesn't play!*
    
  •  		}*
    
  •  	}*
    
  •  }*
    
  • }*
    any help would be greatly appreciated.
    - Cory

1 Answer

1

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*);*
  •  			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