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

2025-10-06 21:46:54

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

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

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

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

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

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

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

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,然后,把脚本添加上去,添加对应的音频,并设置属性,具体如下图

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

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢