Unity 之 简单实现自定义定时播放队列各个音频
1、打开Unity,新建一个空工程,具体如下图

2、在工程中添加一个脚本,双击或者右键打开脚本进行编辑,具体如下图

3、编写脚本,定义音频类型,编写脚本,在脚本使能的时候添加播放队列,失能的时候,销毁对应的播放队列,具体如下图


4、脚本的具体内容如下图:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 音频管理的结构类型
/// audioClip:音频文件
/// delayTime:延时时间
/// loop:是否循环播放
/// vulume:播放的音量
/// </summary>
[System.Serializable]
public class AudioStruct {
public AudioClip audioClip;
public float delayTime;
public bool loop = false;
[Range(0.0f, 1.0f)]
public float volume = 1.0f;
}
public class AudioPlayList : MonoBehaviour {
public AudioStruct[] audioStructList;
private List<AudioSource> audioList = new List<AudioSource>();
// 脚本使能的时候,开始播放 AudioStruct[] 队列
void OnEnable() {
foreach (var item in audioStructList)
{
StartCoroutine(PlayAudioClip(item));
}
}
// 脚本失能的时候,停止所有的协程,并销毁添加的音频源组件
void OnDisable() {
StopAllCoroutines();
foreach (var item in audioList)
{
Destroy(item);
}
}
// 使用协程播放的音频队列
IEnumerator PlayAudioClip(AudioStruct audioStructItem) {
//等待播放的延时时间
yield return new WaitForSeconds(audioStructItem.delayTime);
// 添加音频播放源,并且把设置的相关数据添加到音频播放源中,然后播放
AudioSource audio = gameObject.AddComponent<AudioSource>();
audioList.Add(audio);
audio.clip = audioStructItem.audioClip;
audio.loop = audioStructItem.loop;
audio.volume = audioStructItem.volume;
audio.Play();
}
}
5、脚本编译正确,回到Unity中,在工程中添加测试音频,在场景中添加一个GameObject,然后,把脚本添加上去,添加对应的音频,并设置属性,具体如下图

6、运行场景,即可下设定的时间,听到对应的音频,具体如下图
