Problème avec don't destroy on load

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Zitork
Messages : 1
Inscription : 06 Août 2017 11:48

Problème avec don't destroy on load

Message par Zitork » 07 Août 2017 12:34

Bonjour,

Etant en plein apprentissage du moteur de jeu Unity, je rencontre un problème :

J'ai deux scènes, dans la première je met une AudioSource et je met un Canvas qui contient un bouton Mute (Pour couper le son de la musique).

Je voulais que quand je lance mon jeu, j'arrive sur la scène 1 et si je charge la scène 2, mon AudioSource et le Canvas avec le bouton Mute apparaissent dans la scène 2.

J'ai donc utilisé un Don't Destroy On Load dans un script C# que j'ai placé sur mon AudioSource, et un autre script avec un Don't Destroy On Load que j'ai placé sur le Canvas qui contient le bouton Mute.

Du coup, maintenant, quand je lance le jeu, j'arrive sur la scène 1 et si je charge la scène 2, la musique et le Canvas sont bien présent.

Mais j'ai un petit problème :

Même si mon bouton Mute est bien présent dans la scène 2, il ne fonctionne plus, car la fonction OnClick du bouton n'est plus renseigné.

Comment faire en sorte que mon Destroy On Load de mon bouton Mute garde la fonction OnClick de renseigné ?

Merci d'avance !

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: Problème avec don't destroy on load

Message par Greg » 14 Août 2017 13:51

Bonjour,

peut-être avec :

Code : Tout sélectionner

    void Awake()
    {
        Scene scene = SceneManager.GetActiveScene();
        if (scene.buildIndex == 1)
        {
            MyLoadMethod();
        }
    }

        void MyLoadMethod()
    {
        GameObject.Find("My Button").GetComponent<Button>().onClick.AddListener(() => MuteMethod());
    }

    void MuteMethod()
    {
        // Do stuff.
    }
S'assurer que la scène est bien dans le build et au bon index et instancié ce script au chargement de la scène.

:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

Répondre

Revenir vers « (C#) CSharp »