Menu
CoddyTech

Mostrar e Ocultar

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 34 de 67.

SetActive(false) desativa um GameObject inteiro: ele não é desenhado, deixa de colidir, os scripts nele param de receber Update(), e seus filhos também são desativados. SetActive(true) reativa tudo, e activeSelf informa se ele está ativo. Este script em um botão oculta a porta no campo door quando o mouse é clicado:

public GameObject door;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        door.SetActive(false);
    }
}

Um script que oculta o próprio objeto, com gameObject.SetActive(false), não consegue reativá-lo, porque seu Update() deixa de ser executado. Portanto, o botão fica em outro objeto, com uma referência ao objeto que ele mostra e oculta.

enabled desativa um componente e deixa o restante do objeto intacto. GetComponent<Renderer>().enabled = false torna um objeto invisível, mas seu colisor ainda bloqueia as coisas: uma parede invisível. Um script com enabled = false não recebe mais chamadas de Update(), mas o objeto permanece na cena, ainda sendo desenhado e colidindo, e seus outros componentes continuam funcionando.

challenge icon

Desafio

Médio

O script da alavanca mantém a ponte em seu campo bridge. Faça a tecla Espaço controlar a ponte: o primeiro pressionamento a oculta, o próximo a traz de volta e assim por diante, uma alternância por pressionamento.

Oculte a ponte inteira, incluindo o colisor, para que ninguém possa ficar em uma ponte que não está lá.

Pressione Play, pressione Espaço algumas vezes e, em seguida, Check.

Experimente você mesmo

using UnityEngine;

public class BridgeSwitch : MonoBehaviour
{
    public GameObject bridge;

    void Update()
    {
        // Space esconde a ponte, e o próximo pressionamento a mostra novamente
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity