Je me suis attaquer aux sons et à la musique de mon jeu, en commençant par les menus.
Je voulais que la musique du menu se joue sans discontinuer d'une scène du menu a une autre. Pour ça j'ai fais un Gameobject "Music" avec un script et "DontDestroyOnLoad", ça fonctionne nickel.
Maintenant Lorsque je veux couper le son dans le menu "settings" c'est la que ça ne fonctionne pas. Je vous met mes script histoire de vous faire une idee:
Le Script pour la musique:
Code : Tout sélectionner
public class MusicScript : MonoBehaviour {
public static MusicScript instance = null;
public SettingsScript Settings;
AudioSource Audio;
public GameObject settings;
private void Awake()
{
// Vérifie si l'instance existe déjà
if (instance == null)
{
// Si ce n'est pas le cas, définit l'instance à celle-ci
instance = this;
}
// Si l'instance existe déjà et que ce n'est pas celle-ci :
else if (instance != this)
{
// Alors détruit celle-ci. Cela applique le pattern Singleton, signifiant que nous ne pouvons avoir qu'une et seulement une instance de GameManager.
Destroy(gameObject);
}
DontDestroyOnLoad(gameObject);
}
private void Start()
{
Settings = settings.GetComponent<SettingsScript>();
Audio = GetComponent<AudioSource>();
}
void Update ()
{
if (Settings.MusicToggle == false)
{
Audio.mute = true;
Debug.Log("ta gueule");
}
else
{
Audio.mute = false;
}
}
}
Code : Tout sélectionner
public GameObject soundon;
public GameObject soundoff;
public GameObject musicon;
public GameObject musicoff;
public bool soundToggle = true;
public bool MusicToggle = true;
void Start ()
{
}
void Update ()
{
if (soundToggle == true)
{
soundoff.SetActive(false);
soundon.SetActive(true);
}
if (soundToggle == false)
{
soundoff.SetActive(true);
soundon.SetActive(false);
}
if (MusicToggle == true)
{
musicoff.SetActive(false);
musicon.SetActive(true);
}
if (MusicToggle == false)
{
musicoff.SetActive(true);
musicon.SetActive(false);
}
}
public void Sound()
{
soundToggle = !soundToggle;
}
public void Music()
{
MusicToggle = !MusicToggle;
}
public void MainMenu()
{
SceneManager.LoadScene("MainMenu");
}
}
Voila, alors j’espère avoir été clair, merci de m’aider si vous avez une idée sur la source de mon problème.