Mostrar e ocultar
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 48 de 85.
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 esconde a porta indicada em seu campo door quando o mouse é clicado:
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}Um script que esconde o próprio objeto com gameObject.SetActive(false) não consegue reativá-lo, porque seu Update() deixa de ser executado. Por isso, o interruptor fica em outro objeto, com uma referência àquele que ele mostra e esconde.
enabled desativa um componente e deixa o restante do objeto como está. 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 desenhado e colidindo, e seus outros componentes continuam funcionando.
Desafio
MédioUse a barra de espaço para esconder a ponte e fazê-la voltar.
- Em
Update(), ao detectarInput.GetKeyDown(KeyCode.Space), chamebridge.SetActive(...)para alternar a ponte inteira, incluindo o colisor. - Passe o oposto do estado dela:
bridge.SetActive(!bridge.activeSelf);.
Pressione “Jogar” e aperte a barra de espaço algumas vezes: a ponte desaparece e volta. Em seguida, clique em “Verificar”.
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
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity