Menu
CoddyTech

Boutons et onClick

Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 6 sur 56.

GameObject > UI > Button - TextMeshPro ajoute un bouton : une Image sur laquelle cliquer, un composant Button et un enfant Text (TMP) pour son libellé. Le onClick du bouton est un événement, une liste de méthodes qu'il appelle lorsqu'un clic est relâché dessus. Un script ajoute sa propre méthode à cette liste avec AddListener, une seule fois, dans Start(). Button se trouve dans l'espace de noms UnityEngine.UI :

using UnityEngine;
using UnityEngine.UI;

public class Doorbell : MonoBehaviour
{
    public Button bellButton;
    private int rings;

    void Start()
    {
        bellButton.onClick.AddListener(Ring);
    }

    void Ring()
    {
        rings++;
        Debug.Log("Ding! " + rings);
    }
}

AddListener(Ring) transmet la méthode elle-même, sans parenthèses. AddListener(Ring()) appellerait Ring immédiatement et transmettrait ce qu'elle renvoie, c'est-à-dire rien ; le code ne compile donc pas : Argument 1: cannot convert from 'void' to 'UnityEngine.Events.UnityAction'. Un écouteur ne prend aucun paramètre et renvoie void. Ajoutée dans Update(), la même méthode rejoindrait à nouveau la liste à chaque image, et un seul clic ferait sonner des centaines de fois. Un clic n'est pris en compte que sur le bouton lui-même, tandis que Input.GetMouseButtonDown(0) est vrai pour un clic n'importe où.

La propriété interactable d'un bouton détermine s'il peut être utilisé. bellButton.interactable = false; le teinte avec sa couleur Disabled Color et ses écouteurs ne sont pas appelés tant que la propriété n'est pas remise à true, afin que le joueur voie quels boutons fonctionnent à cet instant. Sur un téléphone, on appuie sur les mêmes boutons.

challenge icon

Défi

Facile

L’ascenseur de la tour possède un bouton Up et un bouton Down. Écris Lift.cs (la scène référence upButton, downButton et floorText) :

  • Dans Start(), relie upButton à une méthode qui fait monter l’ascenseur d’un étage, et downButton à une méthode qui le fait descendre d’un étage.
  • Les étages vont de 0 à topFloor (3). L’ascenseur se trouve à y = étage x floorHeight (3), donc à l’étage 2, son y vaut 6. Ses x et z restent inchangés.
  • floorText affiche l’étage, sous la forme Floor: 2, dès le départ.
  • À l’étage supérieur, le bouton Up n’est pas interactif, et à l’étage 0, le bouton Down ne l’est pas.

Appuie sur Play, monte jusqu’en haut puis redescends, et enfin appuie sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class Lift : MonoBehaviour
{
    public Button upButton;
    public Button downButton;
    public TMP_Text floorText;
    public int topFloor = 3;
    public float floorHeight = 3f;
    private int floor;

    void Start()
    {
        // Associer upButton et downButton à des méthodes qui déplacent l'ascenseur d'un étage
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Créer de vrais jeux