- Home /
Stop background music on scene enter
Hi :) i have background music playing throughout the scenes,i cant figure it out how to stop bck music on game scene enter,this is my code. What is the best solution?
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI;
public class Music : MonoBehaviour {
static Music instance = null;
void Awake()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
GameObject.DontDestroyOnLoad(gameObject);
}
}
public void ToggleSound()
{
if (PlayerPrefs.GetInt("Muted", 0) == 0)
{
PlayerPrefs.SetInt("Muted", 1);
}
else
{
PlayerPrefs.SetInt("Muted", 0);
}
}
}
Answer by Larry-Dietz · Dec 15, 2017 at 04:00 PM
You need to get a reference to your AudioSource, then set the mute property to true, to mute the audio. Assuming this script is attached to the same object that contains the AudioSource, then you could do something like this..
In your declarations...
AudioSource myAudio;
void Start(){
myAudio = GetComponent<AudioSource>();
}
then in your toggle sound routine...
myAudio.mute=true; //to mute
myAudio.mute=false; //to un-mute
Hope this helps, -Larry
I would like that sound in no matter what state it is is,when i click on game scene stops and when i return to level selection, starts from the beginning and is available also in main scene again.I tried this and kinda works. $$anonymous$$usic stops on game scene enter and when i return to level selection scene music goes from beginning. Only problem now is when i start from main scene,press button to level selection music starts from beginning,doesnot continue and i'm getting nullreference excepption;
private AudioSource Audio; static $$anonymous$$usic instance = null;
void Awake()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
Audio=GetComponent<AudioSource>();
Audio.Play();
GameObject.DontDestroyOnLoad(gameObject);
}
}
void Start()
{
}
void OnLevelWasLoaded(int level)
{
if (level == 2|| level == 3 || level == 4 || level == 5 || level == 6 || level == 7) {
Audio.Stop();
}else if(level == 1)
Audio.Play();
}
public void ToggleSound()
{
if (PlayerPrefs.GetInt("$$anonymous$$uted", 0) == 0)
{
PlayerPrefs.SetInt("$$anonymous$$uted", 1);
}
else
{
PlayerPrefs.SetInt("$$anonymous$$uted", 0);
}
}