I have an intro/loop thing set up with arrays of both the intros and loops so the level can set which bgm is playing.
Here is my script:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class AudioDirector : MonoBehaviour {
public AudioClip[] musicIntros;
public AudioClip[] musicLoops;
public int MusicIndex;
GameObject musicSource;
public AudioClip[] Jingles;
public int JingleType;
// Use this for initialization
void Start () {
musicSource = gameObject;
audio.clip = musicIntros[MusicIndex];
StartCoroutine(playMusic ());
}
// Update is called once per frame
void Update () {
DontDestroyOnLoad (gameObject);
}
public IEnumerator playMusic()
{
audio.Play ();
yield return new WaitForSeconds(audio.clip.length);
audio.clip = musicLoops[MusicIndex];
audio.loop = true;
audio.Play ();
}
public IEnumerator PlayJingle(int jingletype)
{
JingleType = jingletype;
audio.Stop ();
audio.loop = false;
audio.clip = Jingles [JingleType];
audio.Play ();
yield return new WaitForSeconds(audio.clip.length);
audio.clip = musicLoops[MusicIndex];
audio.loop = true;
audio.Play ();
}
}
What’s happening is when I set MusicIndex, it plays that intro and then plays the second loop, no matter what MusicIndex is.
I have no idea what’s going on here. I’ve never encountered this problem before.