Unity 之 简单实现自定义定时播放队列各个音频

时间:2024-10-12 10:14:20

1、打开Unity,新建一个空工程,具体如下图

Unity 之 简单实现自定义定时播放队列各个音频

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

Unity 之 简单实现自定义定时播放队列各个音频

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

Unity 之 简单实现自定义定时播放队列各个音频
Unity 之 简单实现自定义定时播放队列各个音频

4、脚本的具体内容如下图:using System.Col盟敢势袂lections;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,然后,把脚本添加上去,添加对应的音频,并设置属性,具体如下图

Unity 之 简单实现自定义定时播放队列各个音频

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

Unity 之 简单实现自定义定时播放队列各个音频
© 手抄报圈