Page 1 sur 2

[RESOLU]Problème de Scène

Publié : 15 Sep 2020 11:11
par Bilu
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

Re: Problème de Scène

Publié : 15 Sep 2020 11:16
par boubouk50
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.

Re: Problème de Scène

Publié : 15 Sep 2020 19:16
par Bilu
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

Re: Problème de Scène

Publié : 16 Sep 2020 08:16
par boubouk50
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.

Re: Problème de Scène

Publié : 16 Sep 2020 11:31
par Bilu
Bonjour boubouk50,

Oui c'est renseigné :
Image

Image

Bien à toi,

Bilu

Re: Problème de Scène

Publié : 16 Sep 2020 11:43
par boubouk50
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 ().

Re: Problème de Scène

Publié : 16 Sep 2020 12:51
par Bilu
Voici :

Image

Re: Problème de Scène

Publié : 16 Sep 2020 16:36
par boubouk50
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.

Re: Problème de Scène

Publié : 16 Sep 2020 18:20
par Bilu
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

Re: Problème de Scène

Publié : 17 Sep 2020 08:23
par boubouk50
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))