Configurer les événements de pression de bouton

Effectué

Jusqu’à présent, vous avez créé tous les boutons nécessaires à ce projet. Toutefois, les boutons n’ont pas été configurés pour exécuter une action quand vous appuyez dessus. Dans cette unité, vous allez créer un événement d’activation de bouton qui déclenche une action quand vous appuyez sur un bouton.

Chaque bouton créé a quatre propriétés Events qui peuvent être configurées pour déclencher une action :

  • Touch Begin() : Déclenche une action quand un utilisateur touche un objet une première fois.
  • Touch End () : Déclenche une action quand l’utilisateur a terminé de toucher l’objet.
  • Button Pressed () : Déclenche une action quand l’utilisateur appuie sur un bouton.
  • Button Released (): Déclenche une action lorsque l’utilisateur cesse d’appuyer sur un bouton.

Pour cette unité, nous allons nous concentrer sur l’événement Button Pressed().

Pour le moment, si vous entrez en mode lecture (Play), l’objet StatsCard bloquera l’objet PlayerButton. En outre, si vous appuyez sur l’objet CloseCardButton, aucune action ne se produira.

Vous pouvez le tester en simulant une entrée dans l’éditeur. Pour passer en mode Play, appuyez sur le bouton Play situé en haut de l’éditeur. Une fois que vous êtes en mode Play, suivez les instructions ci-dessous pour interagir avec les objets.

Comment se déplacer dans la scène :

  • Utilisez les touches W/A/S/D pour déplacer la caméra vers l’avant, à gauche, vers l’arrière ou à droite.
  • Utilisez les touches Q/E pour déplacer la caméra verticalement.
  • Maintenez enfoncé le bouton droit de la souris pour faire pivoter la caméra.

Comment simuler une entrée manuelle :

  • Maintenez enfoncée la barre d’espace pour activer la main droite.
  • Tout en maintenant enfoncée la barre d’espace, déplacez votre souris pour déplacer la main.
  • Utilisez la roulette de défilement de la souris pour ajuster la profondeur de la main.

Configurer l’événement d’appui sur le bouton PlayerButton

Par défaut, les objets de la scène sont configurés sur active. Le fait qu’un objet soit actif est déterminé par la valeur true ou false. Vous pouvez configurer si un objet doit être actif ou non dans l’éditeur ou à l’aide de code.

Dans la fenêtre Inspector, vous pouvez contrôler si un objet doit être actif au démarrage en cochant la case située en regard de son nom. Étant donné que l’objet StatsCard et ses enfants ne doivent pas être actifs au démarrage de la scène, décochez la case pour que l’objet ne soit pas visible.

Screenshot of the inspector window for the stats card object. The object is unchecked for visibility.

Dans certains cas, vous devez écrire un script pour gérer l’activation des objets. Même s’il est possible de désactiver des objets dans la fenêtre Inspector, vous aurez besoin d’un script pour indiquer à Unity comment rendre l’objet actif après la mise à jour de la scène.

Quand l’objet PlayerButton est activé, l’objet StatsCard doit avoir la valeur active. Le composant PressableButton dans l’objet PlayerButton fournit des événements que vous pouvez configurer à l’aide des fonctions fournies par Mixed Reality Toolkit (MRTK). Une fonction SetActive active un objet lorsqu’un utilisateur appuie sur le bouton.

Lorsque vous créez un événement Button Pressed (), l’objet qui reçoit l’événement est affecté en premier, suivi de la méthode. Dans ce cas, StatsCard reçoit l’événement.

  1. Dans la fenêtre Hierarchy, sélectionnez l’objet PlayerButton

  2. Dans la fenêtre Inspector, dans le composant PressableButton, sélectionnez le bouton + dans la propriété Button Pressed ().

    Screenshot of the pressable button component for the player button. The plus icon is highlighted for the button press property.

  3. Dans la section qui s’affiche, faites glisser l’objet StatsCard dans le champ None (Object).

    Sélectionnez ensuite la liste déroulante des fonctions qui s’affiche, puis sélectionnez GameObject>SetActive (bool).

    Une fois la fonction affectée, cochez la case en regard de l’affectation de l’objet StatsCard.

    Screenshot of the newly added button press event for the player button object.

Maintenant que l’événement Button Pressed () a été ajouté pour l’objet PlayerButton, passez en mode Play. Dans la fenêtre Game, utilisez une simulation d’entrée manuelle pour appuyer sur l’objet PlayerButton dans le but d’afficher l’objet StatsCard.

A demo of pressing the player button object with simulated hand input. When the player button object is pressed, the stats card appears.

Configurer l’événement de pression sur le bouton CloseCard

Même si MRTK fournit des scripts qui comprennent des fonctions pouvant être utilisées pour les événements, vous pouvez également écrire et utiliser vos propres scripts.

Lorsque l’objet CloseCardButton est activé, l’objet StatsCard et tous ses enfants doivent être inactifs. Étant donné qu’il n’existe pas de fonction MRTK pour une telle logique, vous pouvez créer votre propre script qui utilise la fonction Unity .SetActive(). Cette fonction est la fonction sous-jacente qui est utilisée pour définir des objets actifs ou inactifs. La syntaxe est la suivante :

public void SetActive(bool value);

Vous avez maintenant la possibilité de l’utiliser dans votre propre script.

  1. Dans la fenêtre Project, accédez au dossier Scripts.

  2. Dans la fenêtre Project, sélectionnez l’icône +, puis sélectionnez C# Script. Nommez le script CloseCard.

  3. Dans la fenêtre Project, double-cliquez sur le script CloseCard pour l’ouvrir dans Visual Studio.

  4. Le script que vous créez est constitué d’une fonction Disable(). Quand celle-ci est appelée, gameObject (par exemple, StatsCard) est défini comme inactif. Pour rappel, le fait qu’un objet soit actif est déterminé par la valeur true ou false.

    Dans Visual Studio, remplacez le code dans CloseCard par ce qui suit :

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CloseCard : MonoBehaviour
    {
        public void Disable()
        {
            gameObject.SetActive(false);
        }
    }
    
  5. Enregistrez le fichier et revenez à Unity.

Maintenant que vous avez une fonction disponible pour définir un objet comme inactif, vous pouvez utiliser la fonction dans un événement Button Pressed ()pour l’objet StatsCard. Toutefois, avant de pouvoir utiliser la fonction, vous devez l’ajouter en tant que composant à l’objet qui recevra l’événement.

  1. Dans la fenêtre Hierarchy, sélectionnez l’objet StatsCard. Dans la fenêtre Inspector, ajoutez le script CloseCard en tant que composant. Vous pouvez également faire glisser le script CloseCard vers StatsCard dans la fenêtre Hierarchy.

  2. Dans la fenêtre Hierarchy, sélectionnez l’objet CloseCardButton.

  3. Dans la fenêtre Inspector, dans la propriété Events, sélectionnez le bouton + pour créer un événement Button Pressed(). Dans la section qui s’affiche, faites glisser l’objet StatsCard dans le champ None (Object).

    Sélectionnez ensuite la liste déroulante des fonctions qui s’affiche, puis sélectionnez CloseCard>Disabled ().

    Screenshot of the events properties for the close card button object. The newly added button press event is highlighted.

Maintenant que l’événement Button Pressed () est ajouté pour l’objet CloseCardButton, passez en mode Play et appuyez sur le bouton pour voir la carte de statistiques se fermer.

Screenshot of pressing the close card button object with simulated hand input. When the close card button object is pressed, the stats card is hidden.

© 2021 Warner Bros. Ent. Tous droits réservés.