- Home /
How to prevent audio restarting on player respawn
Hi
Quite new to programming and have been trying to make a 2D top down shooter to practice. The problem I'm having is that everytime the player dies and then hits the respawn button, the music resets. I've had a look on these forums to try and come up with a solution and this is as best as I've got so far. I guess I am missing something in the if statement with the 'DontDestroyOnLoad' as it is destroying it.
 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
 
 public class GameController : MonoBehaviour
 {
     public GameObject hazard;
     public Vector2 spawnValue;
     public int hazardCount;
     public float spawnWait;
     public float startWait;
     public float waveWait;
     
     public Text scoreText;
     private int score;
 
     public Text restartText;
     public Text gameOverText;
 
     private bool gameOver;
     private bool restart;
 
     private AudioSource music;
 
     void Start ()
     {
         gameOver = false;
         restart = false;
         restartText.text = "";
         gameOverText.text = "";
         score = 0;
         UpdateScore ();
         StartCoroutine (SpawnWaves ());
 
         if(music.isPlaying)
         {
             DontDestroyOnLoad(music);
         }
         else 
         {
             Destroy(music);
             music = GameObject.FindWithTag("Music").GetComponent<AudioSource>();
         }
 
     }
 
     void Update ()
     {
         if (restart)
         {
             if (Input.GetKeyDown (KeyCode.R))
             {
                 Application.LoadLevel (Application.loadedLevel);
             }
         }
     }
     
     IEnumerator SpawnWaves ()
     {
         yield return new WaitForSeconds (startWait);
         while (true)
         {
             for (int i = 0; i < hazardCount; i++)
             {
                 Vector2 spawnPosition = new Vector2 (Random.Range (-spawnValue.x, spawnValue.x), spawnValue.y);
                 Quaternion spawnRotation = Quaternion.identity;
                 Instantiate (hazard, spawnPosition, spawnRotation);
                 yield return new WaitForSeconds (spawnWait);
             }
             yield return new WaitForSeconds (waveWait);
             if (gameOver)
             {
                 restartText.text = "Press 'R' for restart";
                 restart = true;
                 break;
             }
         }
     }
     
     public void AddScore (int newScoreValue)
     {
         score += newScoreValue;
         UpdateScore ();
     }
     
     void UpdateScore ()
     {
         scoreText.text = "SCORE " + score;
     }
 
     public void GameOver()
     {
         gameOverText.text = "GAME OVER";
         gameOver = true;
     }
 
 }
 
 
Your answer
 
 
             Follow this Question
Related Questions
Menu music stops playing after returning from game level 0 Answers
How to STOP music when loading a SPECIFIC SCENE? 3 Answers
Don't destroy a variable when changing scene 2 Answers
How to stop audio in a scene when DontDestroyOnLoad was already called? 1 Answer
MissingReferenceException in AudioSource on DontDestroyOnLoad GameObject 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                