Mostrar y ocultar
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 48 de 85.
SetActive(false) desactiva un GameObject completo: no se dibuja, deja de colisionar, los scripts que contiene dejan de recibir llamadas a Update() y sus objetos secundarios también se desactivan. SetActive(true) lo reactiva todo, y activeSelf indica si está activo. Este script, colocado en un botón, oculta la puerta indicada en su campo door al hacer clic con el ratón:
public GameObject door;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
door.SetActive(false);
}
}Un script que oculta su propio objeto con gameObject.SetActive(false) no puede volver a activarlo, porque Update() deja de ejecutarse. Por eso, el interruptor está en otro objeto, que tiene una referencia al objeto que muestra y oculta.
enabled desactiva un componente y deja intacto el resto del objeto. GetComponent<Renderer>().enabled = false vuelve invisible un objeto, pero su collider sigue bloqueando cosas: es una pared invisible. Un script con enabled = false deja de recibir llamadas a Update(), pero el objeto permanece en la escena, sigue dibujándose y colisionando, y sus otros componentes siguen funcionando.
Desafío
IntermedioHaz que la barra espaciadora oculte el puente y lo vuelva a mostrar.
- En
Update(), cuando se pulseInput.GetKeyDown(KeyCode.Space), llama abridge.SetActive(...)para activar o desactivar todo el puente, incluido el colisionador. - Pasa el estado opuesto:
bridge.SetActive(!bridge.activeSelf);.
Pulsa «Jugar» y pulsa la barra espaciadora unas cuantas veces: el puente desaparece y vuelve a aparecer. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class BridgeSwitch : MonoBehaviour
{
public GameObject bridge;
void Update()
{
// Space oculta el puente y, al pulsarla de nuevo, vuelve a mostrarlo
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity