Projet Quizz : Affichage question (Random) inarrêtable !!

Questions à propos du GUI, y compris la partie script.
pierrearchi
Messages : 12
Inscription : 08 Mai 2020 14:30

Projet Quizz : Affichage question (Random) inarrêtable !!

Message par pierrearchi » 17 Mai 2020 13:50

Bonjour à tous,

J'ai un problème que je n'arrive pas à résoudre ! J'essaie toujours d'adapter le quizz de la formation de JP Parrein sur la dernière version d'Unity.
Avec void Start() aucune question (TextMeshPro sur Canvas) ne s'affiche !
Avec void Update() il y a un affichage mais les questions tournent en boucle, le programme ne se stoppe pas sur une question.

Aucune erreur n'est affichée dans la console !

Voici le fichier où je déclare mes questions et je les sélectionne :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;


public class bdd1 : MonoBehaviour {

    public string[] tab=new string[4];
    
    void Start() {

        tab[0]="Quelle est la longueur du tunnel Aragnouet Bielsa ?,3070m,2060m,1354m";
        tab[1]="Quelle est la hauteur du barrage de Cap de Long ?,101m,111m,135m";
        tab[2]="Quelle est l'altitude du lac d'Oredon ?,1849m,1726m,1904m"; 
        tab[3]="Quelle est la profondeur du lac de Cap de Long ?,130m,115m,85m";
    }

    public string Alea () {
        
        int nr = Random.Range(0, tab.Length);
        return tab[nr];
        
    }

}
Voici le fichier pour afficher les questions du quizz :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class quizzManager1 : MonoBehaviour{

    public TextMeshProUGUI txtQ;
    
    bdd1 bdd_Q;
    

    
    void Update(){

        txtQ=FindObjectOfType<TextMeshProUGUI>();
        bdd_Q = GetComponent<bdd1>();
        txtQ.text=bdd_Q.Alea();

    }

    
   
}
Merci pour vos retours :)

Pour info, j'ai bien lier l'objet Text(TmeshPro) au script sur le Canvas.
Pièces jointes
Captureq.PNG
Captureq.PNG (7.7 Kio) Consulté 4244 fois
Dernière édition par pierrearchi le 17 Mai 2020 14:19, édité 1 fois.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par djulio74 » 17 Mai 2020 14:17

La chose est normale car en permanence dans la void Update tu affiche chaque frame une question aléatoire.
Essaye de ne changer de question que de manière épisodique, par exemple a l'appuie d'une touche .

dans l'absolu, il faut que tu cherche ta question aléatoire de façon ponctuelle, et stock cette donnée dans une variable string pour l'utilisée avec TextMesh.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

pierrearchi
Messages : 12
Inscription : 08 Mai 2020 14:30

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par pierrearchi » 17 Mai 2020 14:25

Merci pour ton retour.

Dans le fichier d'origine JP parrein utilise un "void Start" (qui fonctionne avec la version Unity 2015) à la place de mon "void Update" ( qui affiche en boucle une question sans s'arreter). Sauf que la question n’apparaît plus alors (avec le void start et Unity 2019)... Je ne comprends pas pourquoi je perds l'affichage ...?

Si on peut m'eclairer ..

Merci.
Dernière édition par pierrearchi le 17 Mai 2020 14:36, édité 1 fois.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par djulio74 » 17 Mai 2020 14:36

Attention à la façon d'écrire et surtout les majuscule.
C'est void Start et non void start.
Sans la majuscule ça deviens une void personnelle qu'il faut appeler pour être exécuté.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

pierrearchi
Messages : 12
Inscription : 08 Mai 2020 14:30

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par pierrearchi » 17 Mai 2020 14:37

oui bien sur ... Merci.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par djulio74 » 17 Mai 2020 14:38

C'était donc bien une erreur de majuscule, ou c'est que tu le savais déjà ?

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

pierrearchi
Messages : 12
Inscription : 08 Mai 2020 14:30

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par pierrearchi » 17 Mai 2020 15:57

Effectivement j'ai bien ecrit Void Start dans le code présenté plus haut ... ce n'est pas le soucis. Merci.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par djulio74 » 17 Mai 2020 16:31

Ok, c'était juste une remarque en passant.
pour ce qui concerne ton probleme, la void Update s'executant a chaque frame, il est normal que la question change en permanence.
comme je te le suggérai, il faut un appel ponctuel dans ton script QuizManager, avec par exemple

Code : Tout sélectionner

    void Update(){
	if (Input.GetKeyDown(KeyCode.A))
        {
        	txtQ=FindObjectOfType<TextMeshProUGUI>();
        	bdd_Q = GetComponent<bdd1>();
        	txtQ.text=bdd_Q.Alea();
        }

    }
ce qui ne modifiera la question seulement en appuyant sur la touche a du clavier.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par jmhoubre » 17 Mai 2020 17:41

Bonjour,

alors déjà, je n'aime pas trop la façon de présenter de ce monsieur, qui sous prétexte de faire des tutos, met en oeuvre des mauvaises pratiques.

Ensuite, Start () et Update () sont des fonctions prédéfinies d'Unity, de la classe Monobehavior, comme plein d'autres (OnTriggerEnter (), Awake (), etc...), dont il faut vraiment retenir quand elles sont appelées.

Plutôt qu'essayer la méthode du démineur belge, je te conseille de lire la documentation d'Unity partie scripting qui concerne Start (). Tu y apprendras que Start is called exactly once in the lifetime of the script, alors que pour Update () : Update is called every frame, if the MonoBehaviour is enabled.
En gros : Start est exécutée une fois au début du jeu, et Update à chaque frame (donc environ 60 fois par seconde pour te donner une idée).

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: Projet Quizz : Affichage question (Random) inarrêtable !!

Message par jmhoubre » 17 Mai 2020 17:51

Je pense qu'il manque quelque chose dans le code publié au début :

bdd1 n'affiche rien :
- la fonction Start () initialise le tableau
- Alea () renvoie une question aléatoire.

quizzManager1 affiche à chaque frame (donc tous les 1/60ème de seconde, plus vite que ton regard peut le percevoir), une question aléatoire.
La solution proposée par Djulio règle ton souci.

Dans un quizz, l'affichage d'une question serait normalement lancé par un bouton "Commencer le quizz" ou "Question suivante". Tu devrais mettre un bouton (dont le texte "Commencer le quizz" serait changé en "Question suivante" dès que la 1ère question a reçu une réponse.

Répondre

Revenir vers « L'interface GUI »