Afficher et masquer
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 34 sur 67.
SetActive(false) désactive un GameObject entier : il n’est pas rendu, il n’entre plus en collision, les scripts qu’il contient ne reçoivent plus d’appels à Update(), et ses enfants sont également désactivés. SetActive(true) réactive tout, et activeSelf indique s’il est activé. Ce script attaché à un bouton masque la porte référencée dans son champ door au clic de la souris :
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}Un script qui masque son propre objet avec gameObject.SetActive(false) ne peut pas le réactiver, car sa méthode Update() ne s’exécute alors plus. L’interrupteur se trouve donc sur un autre objet, qui possède une référence à celui qu’il affiche et masque.
enabled désactive un composant et laisse le reste de l’objet intact. GetComponent<Renderer>().enabled = false rend un objet invisible, mais son collider bloque toujours les choses : c’est un mur invisible. Un script dont la propriété enabled vaut false ne reçoit plus d’appels à Update(), mais l’objet reste dans la scène, toujours rendu et toujours en collision, et ses autres composants continuent de fonctionner.
Défi
MoyenLe script du levier contient le pont dans son champ bridge. Fais en sorte que la touche Espace commande le pont : la première pression le masque, la suivante le fait réapparaître, et ainsi de suite, un changement par pression.
Masque tout le pont, y compris le collider, afin que personne ne puisse se tenir sur un pont qui n’est pas là.
Appuie sur Play, appuie plusieurs fois sur la barre d’espace, puis sur Check.
Essayez vous-même
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// La touche Espace masque le pont, et une nouvelle pression le fait réapparaître
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases du scripting dans Unity
1Votre premier script
Bonjour, UnityPlacez le cubeBouger à chaque imageTourner chaque secondeDirigez avec les touchesRécapitulatif : conduisez le cube4Vecteurs
Addition de vecteursDirectionsEspaces local et mondeVitesse diagonaleDistance entre les objetsVector3 est une structRécapitulatif : pilote de drone7Projet : Attrape l’étoile
L’attrapeurUne étoile qui tombe2L’inspecteur
Champs de l’inspecteurSerializeFieldNombres flottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur5Transformations et hiérarchie
Parents et enfantsÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : Lune en orbite8Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que FindLe null de UnityRécapitulatif : la pièce la plus proche11Projet : Esquivez les blocs
Le coureurBlocs qui tombent6GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur