Hyper Débutant - changer un text en cliquant sur un bouton
Hyper Débutant - changer un text en cliquant sur un bouton
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
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
- boubouk50
- 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
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)
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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Hyper Débutant - changer un text en cliquant sur un bouton
Merci pour la réponse et la référence.
J'ai écrit
Problème: Il passe 2 fois dans la fonction update et mon compteur s'incrémente par unité de 2
Merci pour les infos
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
Re: Hyper Débutant - changer un text en cliquant sur un bouton
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
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 !
Re: Hyper Débutant - changer un text en cliquant sur un bouton
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.
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 (318.1 Kio) Consulté 6377 fois
- boubouk50
- 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
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:Ensuite, dans le champs OnClick de ton bouton, tu vas chercher la fonction IncrementScore ().
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();
}
}
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Hyper Débutant - changer un text en cliquant sur un bouton
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
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
- boubouk50
- 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
Quand tu cliques sur ton bouton, ça incrémente pas le score?
As-tu bien affecté ton Text dans le champs public du script?
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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Hyper Débutant - changer un text en cliquant sur un bouton
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
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