Hyper Débutant - changer un text en cliquant sur un bouton

Questions à propos du GUI, y compris la partie script.
Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 30 Juil 2017 15:43

Bonjour à tous, je débute sur ce sujet. J'ai créé un bouton (Create UI Button) et un texte (Create UI Text).
Je vois bien que, dans l'inspector, il y a un Button script onClick.
Mais je n'arrive pas à assigner une fonction à cet événement.
Je souhaiterais par exemple afficher le texte: "j'ai cliquer sur mon bouton"
Merci et désolé pour ce problème de bas étage

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

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par boubouk50 » 31 Juil 2017 09:38

Salut Raoul,

Ton événement OnClick () va appeler une fonction publique contenue dans un script de ton choix. Il te faut donc créer un script qui contient une fonction publique qui fera ce que tu souhaites.
Tout est expliqué dans le Learn d'Unity sur les boutons (en anglais)
"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

Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 31 Juil 2017 18:08

Merci pour la réponse et la référence.
J'ai écrit

Code : Tout sélectionner

public class clickBouton : MonoBehaviour {
    public static int score;
    public Text countText;

    // Use this for initialization
    void Start () {
        score = 0;
    }


    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            score++;        
            countText.text = "Compteur: "+score.ToString();
        }
    }

}

Problème: Il passe 2 fois dans la fonction update et mon compteur s'incrémente par unité de 2

Merci pour les infos

Avatar de l’utilisateur
Pitou
Messages : 95
Inscription : 28 Juil 2015 20:08
Contact :

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Pitou » 31 Juil 2017 19:10

Salut,
A mon avis c'est que le script est présent 2 fois dans la scène.

Pourquoi avoir mis la variable score en static ?
Je suppose que c'est pour pouvoir la récupérer facilement depuis un autre script, mais cela entraine ton soucis d'incrémentation par 2 à chaque coup si ton script est 2 fois sur scène.

D'ailleurs dans ce que tu fait, tu n'utilises pas du tout un bouton pour recevoir le clic...
Regarde bien les tutos d'Unity sur l'UI ;-)
On dit LE WiFi ! Y'en a marre !

Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 01 Août 2017 10:08

Bonjour et merci pour la réponse

C'est en cliquant sur le bouton que je déclenche l'appel de la fonction. Donc pourquoi n'ai-je pas de bouton?
Il n'y a pas plusieurs scripts, c'est le seul.
J'ai remarqué que c'est en associant le UI.texte "compteur" avec la variable countText du code que cela apparaît.
Mais si je ne le fait pas, ma variable compteur ne se met pas à jour!

Merci pour les infos.
Pièces jointes
2017-08-01.png
2017-08-01.png (318.1 Kio) Consulté 6376 fois

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

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par boubouk50 » 01 Août 2017 10:34

Bon, je comprends pas tout donc je vais faire juste de l'explicatif.

Comme je te l'ai déjà dit, la fonction OnClick () du bouton permet de faire un appel à fonction. Ici, tu appelles clickBouton.name () (qui d'ailleurs n'apparaît pas dans le script fourni... ce serait bien de nous donner ton nouveau code donc). C'est ce dont tu as besoin, je pense.

Ensuite, pour ne pas passer par le bouton, tu as la possibilité de passer par des événements. Notamment le clic souris. Dans ton code, tu utilises Input.GetMouseButtonDown (0) qui va valider la condition à CHAQUE clic souris (et donc pas seulement lorsque tu cliques sur le bouton). Ici, ce n'est pas indiqué, c'est un comportement à utiliser plutôt pour des événements qui n'induisent pas un objet en particulier.

Tu as encore plusieurs possibilités de déclencher un événement: par une collision, un raycast, etc. Mais ce sont des moyens plus complexes et détournés.

Il te faudrait, je pense, une classe plutôt dans ce style:

Code : Tout sélectionner

public class ClickBouton : MonoBehaviour {
     public int score;
     public Text countText;

     // Use this for initialization
     void Start () {
          score = 0;
     }

     //Fonction incrémentale du score et mise à jour de l'affichage
     public void IncrementScore () {
          score++; 
          countText.text = "Compteur: "+ score.ToString();
     }
}
Ensuite, dans le champs OnClick de ton bouton, tu vas chercher la fonction IncrementScore ().
"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

Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 01 Août 2017 11:44

Désolé, mais je suis toujours au niveau de la bougie!

J'ai supprimé les 2-3 scripts qui trainaient et recopier uniquement celui fourni.
J'ai associé ce script (drag and drop) à la main camera
Pour mon bouton, je trouve bien la fonction clickBouton.IncrementScore

Mais en effectuant le debug, j'ai bien un passage par le Start() mais pas par IncrementScore()


Merci

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

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par boubouk50 » 01 Août 2017 11:51

Quand tu cliques sur ton bouton, ça incrémente pas le score?
As-tu bien affecté ton Text dans le champs public du script?
"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

Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 01 Août 2017 19:17

Quand tu cliques sur ton bouton, ça incrémente pas le score?
Exactement. Il ne passe même pas dans la fonction IncrementScore() qui modifie la valeur de score
J'ai mis un point d'arrêt en liant le script à unity. Dans Start(), c'est bon, il passe. Pas dans IncrementScore()



As-tu bien affecté ton Text dans le champs public du script?
Il me semble avoir fait le lien.
en image j'ai mis l'inspector des éléments UI.Button UI.Text et de MainCamera
Dans MainCamera, il y a des plusieurs click bouton avec le Count Text. J'ai mis également pour tester fais glisser UI COuntText mais cela ne change rien. Evidemment, il ne passe pas par la fonction d'incrémentation


Merci

Raoul

Raoul
Messages : 9
Inscription : 28 Juil 2017 16:36

Re: Hyper Débutant - changer un text en cliquant sur un bouton

Message par Raoul » 01 Août 2017 20:00

Il me semble que les images ne sont pas passées!

Le bouton
Image

Le text
Image

La Main Caméra
Image


Merci pour les infos

Raoul

Répondre

Revenir vers « L'interface GUI »