Advertisement
Kisaca121

AudioSource across all Scenes

Jun 12th, 2025 (edited)
1,073
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.41 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.SceneManagement;
  3.  
  4. public class Music : MonoBehaviour
  5. {
  6.     static Music music;
  7.     [SerializeField] AudioClip menuLoop, gameLoop;
  8.     [SerializeField] AudioSource audioSource;
  9.     string lastScene = "";
  10.     AudioClip newAudioClip = null;
  11.     void Start()
  12.     {
  13.         if (music != null)
  14.         {
  15.             Destroy(gameObject);
  16.         }
  17.         else
  18.         {
  19.             DontDestroyOnLoad(gameObject);
  20.             music = this;
  21.             lastScene = SceneManager.GetActiveScene().name;
  22.             UpdateMusic();
  23.         }
  24.  
  25.         audioSource.Play();
  26.     }
  27.     void Update()
  28.     {
  29.         string currentScene = SceneManager.GetActiveScene().name;
  30.         if (currentScene != lastScene)
  31.         {
  32.             lastScene = currentScene;
  33.             UpdateMusic();
  34.         }
  35.     }
  36.  
  37.     public void UpdateMusic()
  38.     {
  39.         switch (SceneManager.GetActiveScene().name)
  40.         {
  41.             case "Menu":
  42.             case "Settings":
  43.                 newAudioClip = menuLoop;
  44.                 break;
  45.             case "Level 1":
  46.                 newAudioClip = gameLoop;
  47.                 break;
  48.             default:
  49.                 print("No Audio will be playing!");
  50.                 break;
  51.         }
  52.  
  53.         if (newAudioClip != audioSource.clip)
  54.         {
  55.             audioSource.clip = newAudioClip;
  56.             audioSource.Play();
  57.         }
  58.     }
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement