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

66 lines
1.4 KiB
C#
Raw Normal View History

2026-07-25 20:42:09 -04:00
using UnityEngine;
using System.Collections.Generic;
2026-07-26 00:59:17 -04:00
// Idea from https://discussions.unity.com/t/play-audio-in-queue/239402/2
2026-07-25 20:42:09 -04:00
public class MusicManager : MonoBehaviour
{
public AudioClip intro;
public AudioClip loop;
public AudioClip outro;
private AudioSource audioSource;
private Queue<AudioClip> clipsQueue;
2026-07-28 00:44:11 -04:00
private bool isPaused = false;
2026-07-25 20:42:09 -04:00
// 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()
{
2026-07-28 00:44:11 -04:00
if (audioSource.isPlaying == false && !isPaused)
2026-07-25 20:42:09 -04:00
{
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);
}
2026-07-28 00:44:11 -04:00
public void pauseMusic()
{
audioSource.Pause();
isPaused = true;
}
public void resumeMusic()
{
audioSource.UnPause();
isPaused = false;
}
2026-07-25 20:42:09 -04:00
}