Mute/Unmute un Audiosource dans toutes les scènes
Publié : 23 Juil 2017 18:40
Bonjour/Bonsoir ! Je cherche une solution pour mon problème d'audiosource. Je crée un petit jeu 2D et j'ai ajouté un menu option avec un bouton "Mute/Unmute" avec un script en C# qui travaillait comme ceci:
Je pouvais mute et Unmute la musique tant que je restait dans la même scène mais je me suis rendu compte que quand je changeait de scène le bouton ne marchait plus car la variable boolean n'était plus la même (par exemple quand j'activais mute et que je changeais de scène cela restait en mute)
Du coup après j'ai pensé qu'avec PlayerPrefs je pouvait stocker un key int et que quand elle était sur 0 le son n'était pas mute et quand il est sur 1 le son est mute, alors j'ai fait ça:
Et là c'est la même chose, je peux mute/unmute tant que je suis dans la même scène mais dès que je change cela ne marche plus et le PlayerPrefs reste sur 1 (je pense) donc concrètement le son reste mute
Pourriez-vous m'indiquer si je peux corriger mon script ou alors utiliser une autre méthode pour (je le répète) pouvoir Mute/Unmute en changeant de scène (si je mute dans la scène 1 ça reste mute à toutes les scènes et je peux Unmute quand je veux)
Désolé je me répète beaucoup mais j'avais envie d'expliquer au mieux
Merci d'avance! ( =
PS: l'Audiosource ne recommence pas à chaque scène, il a un script DontDestroyOnLoad
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mute : MonoBehaviour
{
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void Mutemusic()
{
if (audioSource.mute) { audioSource.mute = false; }
else{ audioSource.mute = true; }
}
}
Du coup après j'ai pensé qu'avec PlayerPrefs je pouvait stocker un key int et que quand elle était sur 0 le son n'était pas mute et quand il est sur 1 le son est mute, alors j'ai fait ça:
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mute : MonoBehaviour
{
private AudioSource audioSource;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void Update()
{
if (PlayerPrefs.GetInt("isMuted") == 1) { audioSource.mute = true; }
else if(PlayerPrefs.GetInt("isMuted") == 0) { audioSource.mute = false; }
}
public void Muting()
{
if (PlayerPrefs.GetInt("isMuted") == 1)
{
PlayerPrefs.SetInt("isMuted", 0);
}
else if(PlayerPrefs.GetInt("isMuted")== 0)
{
PlayerPrefs.SetInt("isMuted", 1);
}
}
}
Pourriez-vous m'indiquer si je peux corriger mon script ou alors utiliser une autre méthode pour (je le répète) pouvoir Mute/Unmute en changeant de scène (si je mute dans la scène 1 ça reste mute à toutes les scènes et je peux Unmute quand je veux)
Désolé je me répète beaucoup mais j'avais envie d'expliquer au mieux
Merci d'avance! ( =
PS: l'Audiosource ne recommence pas à chaque scène, il a un script DontDestroyOnLoad