[RESOLU] Associer du code à un bouton

Questions à propos du GUI, y compris la partie script.
Répondre
ffb.boy.30
Messages : 5
Inscription : 28 Sep 2018 12:50

[RESOLU] Associer du code à un bouton

Message par ffb.boy.30 » 28 Sep 2018 12:57

Bonjour,
Je cherche à détecter le Click sur un bouton pour utiliser mon script .
Il y a plein de video pour gérer les click mais avec des objets présent dans le canvas mais je ne trouve pas comment faire le lien entre mon bouton et mon code.
J'ai essayé de créer un Component Script mais il ne peut pas gérer les events

Merci pour votre aide
Dernière édition par ffb.boy.30 le 03 Oct 2018 09:15, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: associé du code à un bouton

Message par Alesk » 28 Sep 2018 13:10


ffb.boy.30
Messages : 5
Inscription : 28 Sep 2018 12:50

Re: associé du code à un bouton

Message par ffb.boy.30 » 28 Sep 2018 13:25

Ok merci
mais je tourne quand même en rond.
J'ai 3 boutons.
Je rajoute un Event System sur ce bouton par contre je ne peux pas en créer un autre pour les autres boutons.
Si je clique dans l'inspector sur OnCLick() et que j'en rajoute un, ensuite je fais glisser mon bouton dedans .Dans le fonctions proposées je ne trouve pas comment créer du code pour le click sur ce bouton.

Si je crée un nouveau script avec AddComponent de mon bouton je ne peux pas détecter le click par contre le script apparait dans la liste des fonctions OnClick mais il n'y a pas de Event

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: associé du code à un bouton

Message par Liven » 29 Sep 2018 00:56

il n'y a besoin que d'un seul Event System dans ta scène (il gère l'ensemble des bouton et autres élément d'UI, mais ne sert pas à "lancer" du code)

Et pour exécuter du code lorsque l'on appuie sur un bouton :
  • Il faut que tu crée un script contenant une void publique.
  • Et que tu mette ce script sur un objet de ta scène bien sur.

Dans le composant button de ton objet bouton, dans la partie "onclick":
  • ajoute une ligne avec le +
  • glisse l'objet qui contient le script que j'évoque plus haut dans le champ sous "runtim only"
  • puis sélectionner ta public void dans le menu déroulant d'à coté.
Et puis voila, t'as plus qu'à écrire ton code dans ta void publique et elle serra appelée à chaque fois que tu click sur le bouton.

Nesska
Messages : 5
Inscription : 05 Juin 2018 09:58

Re: associé du code à un bouton

Message par Nesska » 30 Sep 2018 19:38

Bonsoir !

Je me permets de demander de l'aide ici, étant donné que c'est le même type de problème, si je dois faire un nouveau post, dites le moi :)

Je me retrouve confrontée à un problème similaire étant en apprentissage, je tente simplement d'afficher un message dans la console à l'aide d'un bouton et je me suis aidée du code de la doc : voici mon code

Code : Tout sélectionner

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class ButtonsScript : MonoBehaviour

    {

        public Button myButton;

        void Start()
        {
            Button btn = myButton.GetComponent<Button>();
            btn.onClick.AddListener(TaskOnClick);
        }

        public void TaskOnClick()
        {
            Debug.Log("You have clicked the button!");
        }

}

Je viens de vérifier toutes les étapes que Liven a listées dans le message précédent, et pourtant pas moyen d'afficher ce message :roll:

ffb.boy.30
Messages : 5
Inscription : 28 Sep 2018 12:50

Re: associé du code à un bouton

Message par ffb.boy.30 » 01 Oct 2018 08:48

Mon projet est structuré ainsi
MainCamera
|->Canvas
       |->BtnPlay
       |->BtnPrevious
       |->BtnNext
       |->EventSystem

1-) J'ai crée ce script que j'ai fait glissé sur mon Event

Code : Tout sélectionner

using UnityEngine;

namespace Assets.Scripts
{
    class MnuBtn : MonoBehaviour    
    {
        public void BtnPrevious()
        {
            Debug.Log("Click Previous button");
        }
        public void BtnNext()
        {
            Debug.Log("Click Next button");
        }
        public void BtnPlay()
        {
            Debug.Log("Click Play button");
        }
    }
}
et le script est apparu dans l'Inspector du Canvas

2-) ensuite j'ai suivi la procédure de Liven,j'ai fait glissé le Event sur mes boutons et j'ai associé chacun à sa fonction.

Et sa fonctionne Merci Liven ::d ::d

il me reste juste un petit détail car j'ai un de mes boutons qui est sur un text alors il ne détecte pas le Event.

Pour info quand tu joues ton projet si tu cliques sur le Event puis Inspector tu vois en tps réel les events.

Nesska
Messages : 5
Inscription : 05 Juin 2018 09:58

Re: associé du code à un bouton

Message par Nesska » 01 Oct 2018 17:27

Mon script était sur le Canvas avec le bouton en enfant, j'ai donc essayé comme toi en enlevant le script du Canvas et en le mettant sur l'Event et l'enfanter au Canvas

J'ai accès à mes méthodes publiques, je les mets, je sauvegarde partout pour être sûre, je lance et toujours rien :?

J'ai essayé avec un nouveau projet vierge, même résultat et malgré toutes les solutions testées qui viennent des forums anglais aussi, ça ne va toujours pas... Il y aurait moyen que j'envoie mon projet à quelqu'un qu'il puisse y jeter un oeil quand il a le temps ? Je ne vois pas ce ce que je pourrais essayer de plus :gene:

J'ai oublié d'ajouter aussi que d'autres personnes ont également copier coller mon script tel quel et associé à un bouton et il fonctionne chez eux mais pas chez moi, alors que j'ai déjà désinstallé et réinstallé Unity ce matin avec la toute dernière version... Le problème viendrait de mon pc ?

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: associé du code à un bouton

Message par Liven » 02 Oct 2018 11:27

Nesska a écrit :
30 Sep 2018 19:38
Bonsoir !

Je me permets de demander de l'aide ici, étant donné que c'est le même type de problème, si je dois faire un nouveau post, dites le moi :)

Je me retrouve confrontée à un problème similaire étant en apprentissage, je tente simplement d'afficher un message dans la console à l'aide d'un bouton et je me suis aidée du code de la doc : voici mon code

Code : Tout sélectionner

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class ButtonsScript : MonoBehaviour

    {

        public Button myButton;

        void Start()
        {
            Button btn = myButton.GetComponent<Button>();
            btn.onClick.AddListener(TaskOnClick);
        }

        public void TaskOnClick()
        {
            Debug.Log("You have clicked the button!");
        }

}

Je viens de vérifier toutes les étapes que Liven a listées dans le message précédent, et pourtant pas moyen d'afficher ce message :roll:

Tu n'a pas besoin de tout ce qui est dans start ni de ta variable myButton.
Tu as juste besoin de ta classe publique "taskvoid" et la lier à ton bouton dans l'inspector (ça ne se fait pas par le code).

Image

Nesska
Messages : 5
Inscription : 05 Juin 2018 09:58

Re: associé du code à un bouton

Message par Nesska » 03 Oct 2018 07:40

Merci pour ta réponse Liven !

Je viens finalement de trouver le problème que j'avais... C'est simplement que je devais installer le framework developpeur .net (j'ai suivi des dizaines de tutos j'ai jamais eu ce problème pourtant)

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

Re: associé du code à un bouton

Message par boubouk50 » 03 Oct 2018 09:01

Pense à passer le sujet en [RESOLU].
(à mettre en début de titre de premier message)
"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

Répondre

Revenir vers « L'interface GUI »