CCCPaste Login

AudioSource across all Scenes

using System.Diagnostics;
using Unity.PlasticSCM.Editor.WebApi;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Music : MonoBehaviour
{
    static Music music;
    [SerializeField] AudioClip menuLoop, gameLoop;
    [SerializeField] AudioSource audioSource;
    string lastScene = "";
    AudioClip newAudioClip = null;
    void Start()
    {
        if (music != null)
        {
            Destroy(gameObject);
        }
        else
        {
            DontDestroyOnLoad(gameObject);
            music = this;
            lastScene = SceneManager.GetActiveScene().name;
            UpdateMusic();
        }

        audioSource.Play();
    }
    void Update()
    {
        string currentScene = SceneManager.GetActiveScene().name;
        if (currentScene != lastScene)
        {
            lastScene = currentScene;
            UpdateMusic();
        }
    }

    public void UpdateMusic()
    {
        switch (SceneManager.GetActiveScene().name)
        {
            case "Menu":
            case "Settings":
                newAudioClip = menuLoop;
                break;
            case "Level 1":
                newAudioClip = gameLoop;
                break;
            default:
                print("No Audio will be playing!");
                break;
        }

        if (newAudioClip != audioSource.clip)
        {
            audioSource.clip = newAudioClip;
            audioSource.Play();
        }
    }
}