[Résolu][DB-AL] Correspondance catégorie/questions (Quizz)

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
JollyStone
Messages : 33
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

[Résolu][DB-AL] Correspondance catégorie/questions (Quizz)

Message par JollyStone » 10 Fév 2020 16:08

Bonjour,

Un quizz façon Unity (Tutoriel Unity)

Lors de la sélection d’une catégorie de questions dans le menu, le jeu se lance et les questions correspondent bien à la catégorie choisie, ainsi que le nom et la couleur de cette catégorie.
Par contre, une fois que le menu est à nouveau affiché à la fin du tour et qu’une autre catégorie est sélectionnée, les questions correspondent à la première catégorie choisie et non à la nouvelle. Or, le nom et la couleur correspondent bien au nouveau choix.

J’ai beau triturer le code dans tous les sens, rien n’y fait.

Je pense que le problème vient du fait que la sélection des questions dans la base de donnée (fichier JSON) se fait au lancement du jeu (scène persistante (DontDestroyOnLoad)) et que ce processus n’est pas réinitialisé et renouvelé lors d’un second choix de catégorie. Mais je ne vois pas du tout comment faire pour régler le problème.
J’ai essayé différentes choses comme modifier l’ordre des scènes, supprimer le GameObject qui contient ce script, placer ce code dans le script du menu, … et j’en passe.

Est-ce que quelqu’un se sent le courage de rechercher ce qui coince ?

Fichiers du jeu - Unity 2018.4
Pour les tests, j'ai réglé le compte à rebours sur 30 secondes.
Par défaut, il est réglé à 300 secondes (modifiable dans Window > GameDataEditor).
Dernière édition par JollyStone le 14 Fév 2020 12:16, édité 1 fois.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Correspondance catégorie/questions (Quizz)

Message par Max » 11 Fév 2020 19:31

Salut,

bon je viens d'essayer ton package. Pas évident de parcourir comme cela un projet pour du debug fonctionnel.
Donc en regardant vite fait, j'ai remarqué dans la méthode ShowQuestion(),
quand tu fais le currentQuestion = unansweredQuestions [randomQuestionIndex];, cela ne correspond
pas à ce que contient currentRoundData.questions qui lui contient les bonnes données par rapport au thème sélectionné..
Donc une piste à suivre peut-être dans la génération de unansweredQuestions.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

JollyStone
Messages : 33
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

Re: [DB-AL] Correspondance catégorie/questions (Quizz)

Message par JollyStone » 14 Fév 2020 12:15

Salut Max,
Oui, je comprends la difficulté de se plonger dans du code que l’on n’a pas écrit soit même.

Pour commencer, je me suis demandé comment tu arrives à voir que les données ne correspondent pas entre la liste unansweredQuestions et currentRoundData.questions. Et donc, que les données correspondent bien au choix de catégorie.
Bon, un réflexe que je n’ai pas : utiliser la fonction Debug de l’Inspector. :roll:

Par contre, après maintes recherches et réflexions, je ne vois toujours pas comment régler le problème. J’ai revisionné les vidéos du tutoriel espérant y trouver un indice, quelque chose qui m’aurait échappé… En vain.
Je commence à m’y perdre dans la mécanique du système.

Est-ce que le fait que le GameObject MenuScreenController n’est pas supprimé entre les rounds peut poser problème ?
Au deuxième round, le nouveau MenuScreenController indique bien la valeur attendue pour roundNumber mais la variable roundNumber du premier MenuScreenController toujours présent indique évidemment la valeur du premier choix de catégorie.

Eureka !
Tout en écrivant ceci, j’ai eu l’idée de vider la liste unansweredQuestions :

Code : Tout sélectionner

unasweredQuestions = null;
… Et ça fonctionne ! C'était vraiment tout bête.
Il me reste maintenant à vérifier que tout les petits détails fonctionnent correctement.

Merci beaucoup pour ton aide Max !

Répondre

Revenir vers « (C#) CSharp »