When I change scene, the music stops, how can i make it continue?
HI, as @Mrobertson said, you should use dontDestroyOnLoad in the object where your AudioSource is attached.Just add something like this in your script:
function Awake () {
DontDestroyOnLoad (transform.gameObject);
}
Hope it helps.
I personally like to use the async functions for loading scenes, they let you display loading graphics/loading sounds without hiccups:
As Mrobertson stated, you can have your playback system to DontDestroyOnLoad, another option is to use additive scenes and keep pieces you want to delete as children beneath nicely named game objects so that you can say GameObject.Destroy(GameObject.Find("Level2-Enemies"))
or something along said lines.
When this question comes up, DontDestroyOnLoad is the answer given, but it is only half the solution. For example, if you load the scene where the music player is created, then a duplicate is made, now you have 2 players following you through all the scenes. It took me a while to find the solution, but the answer is to use a Singleton . Search singletons on this 'site (or in google search “unity singleton”) as there would be better explanations than what I could give.
The simple version is : only one instance of a singleton exists at a time, two cannot exist. It can be called by all scripts by using a static variable. So only one, and it has a variable which other scripts can reference.
Here is the script for a working singleton, just attach it to the music player. Note : this is in unity JS, and the script must be called MusicSingleton :
#pragma strict
// change the class name here to the name of your script, e.g.
// public class ThisIsTheScriptNameHere extends MonoBehaviour
public class MusicSingleton extends MonoBehaviour
{
private static var instance : MusicSingleton;
function Awake()
{
if (instance != null && instance != this)
{
Destroy( this.gameObject );
return;
}
else
{
instance = this;
}
DontDestroyOnLoad( this.gameObject );
}
// also change this to your script name
// public static function GetInstance() : ThisIsTheScriptNameHere
public static function GetInstance() : MusicSingleton
{
return instance;
}
function Update()
{
//
}
}