Menu
CoddyTech

Activer et désactiver les panneaux

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

panneau est une image d’interface, souvent étirée sur tout l’écran, qui contient des boutons et des textes. SetActive(false) sur le panneau le masque, ainsi que tout ce qu’il contient, et ses boutons ne peuvent pas être cliqués tant qu’il est masqué. Lorsqu’il est affiché, son image intercepte les clics destinés aux éléments situés en dessous : les boutons derrière un panneau en plein écran ne peuvent donc pas être activés. Cette carte s’ouvre avec un bouton dans un coin et se ferme avec un bouton sur la carte :

public GameObject mapPanel;
public Button mapButton;
public Button closeButton;

void Start()
{
    mapPanel.SetActive(false);
    mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
    closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}

Les panneaux sont plus faciles à modifier lorsqu’ils sont affichés ; les scènes sont donc souvent enregistrées avec les panneaux activés, et Start() les masque. Ne place pas le script qui ouvre un panneau sur ce panneau : un GameObject inactif n’exécute ni Start() ni Update(), donc un script placé sur un panneau enregistré masqué ne pourrait jamais connecter ses boutons. Le Canvas ou un objet de gestion du jeu, qui restent actifs, sont de bons emplacements pour ce script. mapPanel.activeSelf indique si le panneau est activé, donc mapPanel.SetActive(!mapPanel.activeSelf) inverse son état.

challenge icon

Défi

Facile

Ajoute un menu au jeu de prairie : écris Start() dans Menu.cs.

  1. Masque menuPanel et helpPanel avec SetActive(false).
  2. menuButton affiche le menu et définit mover.enabled = false ; resumeButton le masque et définit mover.enabled = true.
  3. helpButton masque le menu et affiche l’aide ; backButton fait l’inverse.

Clique sur « Jouer » et ouvre le menu : le joueur ne peut pas marcher avant de cliquer sur Reprendre. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;
using UnityEngine.UI;

public class Menu : MonoBehaviour
{
    public GameObject menuPanel;
    public GameObject helpPanel;
    public Button menuButton;
    public Button resumeButton;
    public Button helpButton;
    public Button backButton;
    public PlayerMover mover;

    void Start()
    {
        // Masquer les deux panneaux, puis associer les boutons Menu, Resume, Help et Back à leurs actions
    }
}

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

Entraînez-vous par vous-même : Playground Unity