[RESOLU]Problème de Scène

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Bilu
Messages : 42
Inscription : 20 Nov 2019 09:24

[RESOLU]Problème de Scène

Message par Bilu » 15 Sep 2020 11:11

Bonjour,

J'ai un petit soucis avec le chargement de mes scènes.
J'ai pour le moment deux scènes :
1°) c'est le menu/page d'acceuil du jeu. Appelons la scène 0;
2°) la scène avec le joueur. Appelons Scène 1;

Quand on clique sur play dans le menu du jeu(scène 0), cela lance la scène avec le joueur (Scène 1) et la partie commence. Il n'y a qu'un "niveau" puisque le but est de survivre le plus longtemps possible.
Dans quand on clique sur le bouton play, le code suivant est utilisé :

Code : Tout sélectionner

 
 pulbic void PlayGame()
{
SceneManager. LoadScene(SceneManager.GetActiveScene().buildIndex +1);
}
Dans "Build Setting" la scène 0 a bien l'index 0 et la scène 1 a bien l'index 1.

Tout fonctionne : quand je clique sur Play dans le menu, la scène 1 charge.
Mais en réalité elle REcharge. En effet, quand je run, je vois dans la fenêtre "Hierachy" que le jeu tourne, les ennemy spawnent, le compteur de temps defile, ... etc. Or je n'ai pas encore appuyer sur Play. Donc à l'écran, je suis bien dans le Menu mais derrière le jeu tourne. Puis quand j'appuye sur Play, la scène 0 disparait de Hierarchy et je n'ai que la scène avec joueur (Scène 1). Et cette scène a bien été rechargé car le compteur est à Zéro et il y a 0 ennemi.

J'ai essayé en faisant clique droit sur la scène 1 -> Unload scene
Mais du coup après avoir cliqué sur Play, rien ne se passe, la scène 1 ne charge pas.

C'est assez problématique et j'aimerai comprendre ce que je fais de mal ?
Est ce que vous pourriez m'aider à ce que la scène 1 charge qu'à partir du moment ou j'ai cliqué sur Play dans la scène 0 s'il vous plaît ?

Bien à vous,

Valentin
Dernière édition par Bilu le 18 Sep 2020 09:26, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5438
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Problème de Scène

Message par boubouk50 » 15 Sep 2020 11:16

Si les deux scènes sont chargées dans l'inspector (mode éditeur) alors elles le seront au runtime. Il ne te faut donc que la scène 0 pour commencer.
Ensuite, pour charger la scène 1, pourquoi n'utilises-tu pas simplement son nom ou son index (1)?
Enfin, (déjà je passe les erreurs de scripts de la ligne donnée, pulbic devrait générer une erreur), tu mappes la fonction sur le OnClick () de ton bouton, et cela devrait fonctionner.
Si la scène est chargée sans cela, ce n'est pas normal, ta fonction est appelée ailleurs.
"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

Bilu
Messages : 42
Inscription : 20 Nov 2019 09:24

Re: Problème de Scène

Message par Bilu » 15 Sep 2020 19:16

boubouk50 a écrit :
15 Sep 2020 11:16
Il ne te faut donc que la scène 0 pour commencer.
C'est justement ça que je ne vois pas comment faire @boubouk50 .
Dans l'inspector en mode editor, j'ai fait clique droit sur la scène 1 puis "unload" mais quand je run, lorsque j'appuie sur "Play" ça ne charge pas la scène 1. Or lorsqu'elle n'est pas en unload, les deux scènes co existe mais lorsque j'appuie sur Play la scène 1 se recharge (le timer recommence à 0, tous les ennemis ont disparus, ... ) donc la ligne de code(bien écrite ) fonctionne

En effet c'est public et non pulbic désolé.
Je vais suivre ton conseil et l'appeler par son nom.

Bien à vous,

Bilu

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5438
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Problème de Scène

Message par boubouk50 » 16 Sep 2020 08:16

As-tu renseigné les scènes dans les scenes in Build settings?
Image

Le nom de scène et son numéro de scène permettent de trier et organiser les scènes.
en 0, il te faut la scène 0 et en 1 la scène 1.
Si elles ne sont pas renseignées, alors Unity considère qu'elles ne font pas partie du build donc tu ne peux pas les appeler.
"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

Bilu
Messages : 42
Inscription : 20 Nov 2019 09:24

Re: Problème de Scène

Message par Bilu » 16 Sep 2020 11:31

Bonjour boubouk50,

Oui c'est renseigné :
Image

Image

Bien à toi,

Bilu

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5438
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Problème de Scène

Message par boubouk50 » 16 Sep 2020 11:43

Dans ce cas, ce doit être le bouton qui n'est pas lié correctement.
Peux-tu me faire une capture d'écran du Component Button de ton bouton, stp? Surtout le OnClick ().
"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

Bilu
Messages : 42
Inscription : 20 Nov 2019 09:24

Re: Problème de Scène

Message par Bilu » 16 Sep 2020 12:51

Voici :

Image

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5438
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Problème de Scène

Message par boubouk50 » 16 Sep 2020 16:36

Ca m'a l'air correct...

Code : Tout sélectionner

public void PlayGame()
{
	//Renvoie les infos de la scène à l'index 1 dans le build settings
	Scene scene = SceneManager.GetSceneByBuildIndex (1);
	Debug.Log (scene.name);
	SceneManager.LoadScene(1);
}
Modifie ta fonction PlayGame () pour celle-ci. Normalement, si elle est appelée correctement, tu devrais avoir le nom de la scène 1 dans la console.
Si tu n'as rien, alors elle n'est pas appelée depuis le clic, donc soit le clic ne se fait pas (un élément devant par exemple) soit tu n'appelles pas la bonne fonction (un autre script avec une fonction PlayGame () qui ne fait rien).
Comme tu n'as pas de transition sur ton bouton, tu ne vois pas si le clic est bien effectué, c'est pas top top.
Si tu as un message d'erreur, alors il te dira pourquoi, mais il est probable que la scène ne soit pas bonne.
Si tu as un message contenant le nom de la scène, alors elle est bien chargée.
"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

Bilu
Messages : 42
Inscription : 20 Nov 2019 09:24

Re: Problème de Scène

Message par Bilu » 16 Sep 2020 18:20

J'ai changé le scrip et ajouté un effet le bouton "color tint" mais cela ne fonctionne pas ; le bouton ne se tint pas et la scene 1 ne se charge pas.

CEPENDANT, lorsque je charge la scene 1 avant de run
donc comme ceci :
Image

au lieu de
Image

Alors au debut les deux scènes coexistent, puis je clique, le bouton se tint et la scène 1 se (re)charge (je sais qu'elle se recharge car le personnage jouable redémarre au centre de l'ecran, le timer redémarre à zéro, ...) et la scène 0 disparait de hierarchy. Seule la scène 1 se trouve dans Hierarchy.
Image
Est-ce normal ?


J'ai remarqué autre chose :
J'ai dupliquer la scène 1 (save as)
Image

J'ai changé le script :

Code : Tout sélectionner

public void PlayGame()
    {
        
        Scene scene = SceneManager.GetSceneByBuildIndex(2);
        Debug.Log(scene.name);
        SceneManager.LoadScene(2);
    }
Quand je ne mets aucune scène dans Hierarchy appart la scène 0. ça ne fonctionne pas.
Quand je load la scène 2, ça fonctionne comme ecris plus haut (la scène 2 se (re)charge ...)
Quand je met la scène 1 dans hierarchy, c'est LA DEUX qui charge ...
Avant de "run" :
Image

Après avoir run, la scène 0 et 1 coexistent
Et quand je clique sur play c'est la scène 2 qui est chargée :
Image

Mais pourtant elle n'est pas dans hierarchy ... alors que quand ni la scene 1 ni la scene 2 ne sont dans hierarchy, ça ne fonctionne pas ...

Je ne comprends plus rien 8| :-/ :naah:




Bilu

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5438
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: Problème de Scène

Message par boubouk50 » 17 Sep 2020 08:23

Tu n'as pas besoin qu'elle soit dans Hierarchy.
Dans Hierarchy, tu ne dois avoir que la première scène. Cette scène va charger la seconde donc elle viendra remplacer la première dans Hierarchy.
Hierarchy n'est qu'un affichage des scènes et éléments en cours dans l'éditeur, à aucun moment elle participe au programme.
Ce qui est bizarre, de mon point de vue, est que si tu l'as en Unload, cela ne fonctionne pas. Si elle est déchargée, elle ne devrait avoir aucune influence.

Je pense que c'est normal d'avoir la troisième scène qui se charge puisque tu l'as changée dans ton script (LoadScene (2))
"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

Répondre

Revenir vers « Unity le logiciel »