Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Le 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
    }
}
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 Les bases du scripting dans Unity