51 lines
1.1 KiB
C#
51 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
|
|
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);
|
|
}
|
|
}
|