其实控制音乐依次播放关键在于要让 AudioSource组件的AudioClip不断地更换音乐,刚开始我是使用for循环的方法,但是遇到一个最大的问题就是循环执行太快,我本来是想每次将数组里面的三个音乐依次播放,但是每次只能播放数组里面的最后一个音乐,就是因为for循环执行太快,因此我接下来想到了使用协程来控制的办法。
使用协程的原理就是让程序暂时停止,因为我也是刚刚入门的新手,所以对协程的理解仅仅局限于此,更多更深层次的理解请去搜索资料,我的具体代码如下:我在一个函数里面点击按钮之后,开始执行agree方法,但是依次播放的音乐不要放在agree函数体里面,放在里面仍然无法实现功能,只有放在思协程函数里面才能实现暂时的停止功能。
public AudioClip[] audio;
public AudioSource audioSource;
public AudioClip[] clips;
private void Awake()
{ audioSource = GetComponent<AudioSource>();}
public void agree()
{
//for (int i = 0; i < 3; i++) {
// audioSource.clip = clips[0];//然后用audioSource的对象clip进行赋值
StartCoroutine(waitTime());//调用协程
//audioSource.Play();
}
IEnumerator waitTime() {
for (int i = 0; i < 3; i++)
{
clips[i] = audio[i];
audioSource.clip = clips[i];//然后对AudioSource的对象clip进行赋值,也就是更换AudioClip的过程
audioSource.Play();//调用AudioSource的实例化对象进行播放
yield return new WaitForSeconds(1f);//过1秒后
}
}