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 56.
Un panneau est une image d’interface utilisateur, souvent étirée sur tout l’écran, qui contient des boutons et du texte. SetActive(false) sur le panneau le masque, ainsi que tout ce qu’il contient, et il est impossible de cliquer sur ses boutons 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 plein écran ne peuvent donc pas être actionnés. Cette carte s’ouvre à l’aide d’un bouton dans le coin et se ferme à l’aide d’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 actifs, et Start() les masque. Ne place pas le script qui ouvre un panneau sur ce panneau : un GameObject inactif ne reçoit aucun appel à Start() ni à Update(). Un script placé sur un panneau enregistré à l’état masqué ne pourrait donc jamais configurer 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 actif. Ainsi, mapPanel.SetActive(!mapPanel.activeSelf) inverse son état.
Défi
FacileLe jeu dans la prairie a besoin d’un menu. Menu.cs se trouve sur le Canvas (HUD), et la scène relie ses champs. Les deux panneaux sont activés dans la scène, ce qui les rend faciles à modifier. Écris Start() pour que :
- Au démarrage du jeu,
menuPanelethelpPanelsoient masqués. menuButtonouvre le panneau du menu, et sonresumeButtonle ferme.helpButton, sur le panneau du menu, remplace le panneau du menu par celui de l’aide, etbackButton, sur le panneau de l’aide, permet de revenir en arrière.- Pendant que le menu est ouvert, le joueur ne peut pas marcher : le script
moverest désactivé à l’ouverture du menu et réactivé lorsque Resume le ferme.
Appuie sur Play, marche, ouvre le menu puis son aide, et appuie sur Check.
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()
{
// Masque les deux panneaux, puis associe les boutons Menu, Resume, Help et Back à leurs actions
}
}
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
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque