Files
Barrack-Unity/Assets/Scripts/Game/MusicManager.cs
T

52 lines
1.2 KiB
C#

using UnityEngine;
using System.Collections.Generic;
// Idea from https://discussions.unity.com/t/play-audio-in-queue/239402/2
public class MusicManager : MonoBehaviour
{
public AudioClip intro;
public AudioClip loop;
public AudioClip outro;
private AudioSource audioSource;
private Queue<AudioClip> clipsQueue;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
audioSource = GetComponent<AudioSource>();
clipsQueue = new Queue<AudioClip>();
// Intro is only played once, so we enqueue it first.
clipsQueue.Enqueue(intro);
ResetQueue();
}
// Update is called once per frame
void FixedUpdate()
{
if (audioSource.isPlaying == false)
{
audioSource.clip = clipsQueue.Dequeue();
audioSource.Play();
if(clipsQueue.Count == 0)
{
ResetQueue();
}
}
}
private void ResetQueue()
{
clipsQueue.Enqueue(loop);
clipsQueue.Enqueue(loop);
clipsQueue.Enqueue(loop);
clipsQueue.Enqueue(loop);
clipsQueue.Enqueue(outro);
}
}