[RESOLU][DB - AL] Faire durer une musique sur plusieurs scène

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
Marin
Messages : 24
Inscription : 12 Avr 2018 11:59

[RESOLU][DB - AL] Faire durer une musique sur plusieurs scène

Message par Marin » 12 Avr 2018 13:07

Bonjour, je suis coincé sur un problème tout bête, dans mon jeu il y a deux menu différents (compris dans deux scène différentes) et je souhaite que la musique continue malgré le changement de scène entre ces deux menu. J'ai donc créé un GameObject nommé "MenuMusic" (que j'ai placée dans le premier menu) et je lui ai ajouté un script pour qu'il ne se détruise pas au changement de scène :

Code : Tout sélectionner

     void Awake()
          {
               DontDestroyOnLoad(GameObject);
           }
Celà marche bien mais je rencontre un problème :

Je peux passer du Menu 1 au Menu 2 et la musique continue mais lorsque je reviens au Menu 1 la musique ce joue en double (je comprend où est le problème, en fait à chaque fois que je charge le Menu 1 une musique ce créé et ne ce supprime jamais) mais je ne trouve aucune solutions !

Merci d'avance pour vos réponses

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par DevAmat » 12 Avr 2018 14:02

C'est assez simple. Ton objet est dans la scène 1 avec DontDestroyOnLoad. Tu passes à la scène deux. Il est toujours là. Puis tu repasses dans la scène un alors logiquement il est encore là mais en double car il est aussi instancier dans la scène 1 au chargement de celle ci. Su tu retournes deux fois dans la scène 1 tu l'auras 3 fois même.

Plus simplement ton objet est crée dans ta scène 1 donc il sera crée à chaque load de la scène. Et le DontDestroyOnLoad n’empêche pas un objet d’être en "double" ou "triple" etc.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par boubouk50 » 12 Avr 2018 14:53

Pour ce qui est des GaemObjects DontDestroyOnLoad (), je crée une scène unique pour eux que je lance au début et qui va ensuite lancer le jeu.
Donc il ne seront chargés qu'une seule fois au démarrage de l'application.
Sinon, il faut gérer cela avec une instance, un Singleton, et tester si une instance existe déjà.
Exemple:
https://answers.unity.com/questions/110 ... bject.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Marin
Messages : 24
Inscription : 12 Avr 2018 11:59

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par Marin » 13 Avr 2018 00:55

boubouk50 a écrit :
12 Avr 2018 14:53
Pour ce qui est des GaemObjects DontDestroyOnLoad (), je crée une scène unique pour eux que je lance au début et qui va ensuite lancer le jeu.
Donc il ne seront chargés qu'une seule fois au démarrage de l'application.
Sinon, il faut gérer cela avec une instance, un Singleton, et tester si une instance existe déjà.
Exemple:
https://answers.unity.com/questions/110 ... bject.html
Oui je sais d'où vien le problème, je le demandais juste comment faire en sorte que la musique ne se rejoue pas en double ou en triple... Merci quand même
mais est ce que cela ne ralenti pas le jeux au lancement ?
Sinon très bonne idée je vais sûrement utiliser cette méthode :super:

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6214
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par boubouk50 » 13 Avr 2018 09:14

Marin a écrit :
13 Avr 2018 00:55
je le demandais juste comment faire en sorte que la musique ne se rejoue pas en double ou en triple... Merci quand même
mais est ce que cela ne ralenti pas le jeux au lancement ?
Sinon très bonne idée je vais sûrement utiliser cette méthode :super:
Oui, c'est bien à cette question que j'ai répondu... Avec deux méthodes possibles. De rien.
Non, cela ne ralenti pas le jeu. Exactement, ce que je fais est un écran de démarrage/splashscreen (logo animé, titrage, etc.) qui possède les éléments à ne pas détruire. Pendant, cet écran qui ne dure jamais que quelques secondes, je charge ma scène de jeu en asynchrone.
Du coup, le chargement de la première scène est très rapide puisqu'elle ne contient pas grand chose, et le chargement du jeu est anticipé et masqué par l'écran de démarrage.

La méthode avec le singleton reste toutefois très utilisée puisqu'elle a cet avantage de gérer ces éléments directement dans la scène de base. Donc au choix de tes besoins.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
DevAmat
Messages : 435
Inscription : 23 Nov 2016 11:50

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par DevAmat » 13 Avr 2018 10:28

En fait c'est moi qui est pas vraiment répondu à la question.
Le méthode avec un singleton te permet de ne pas dépendre d'une autre scène. Ce qui est pratique pour tester une scène en particulier. Bien sur c'est en fonction de tes besoins!

Marin
Messages : 24
Inscription : 12 Avr 2018 11:59

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par Marin » 13 Avr 2018 12:53

Merci beaucoup ca marche

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: [DB - AL] Faire durer une musique sur plusieurs scène

Message par Iwa » 19 Avr 2018 12:21

Hello,

Merci de penser à basculer en [RESOLU] en éditant ton premier message du topic pour faciliter la lecture des prochains en quête de réponse :). Je le fais ce coup-ci ;).
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

Répondre

Revenir vers « (C#) CSharp »