OnEnable y OnDisable
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 72 de 85.
OnEnable() se ejecuta cada vez que un script se activa: cuando su objeto aparece por primera vez (justo después de Awake()) y cada vez que el objeto se muestra con SetActive(true) o el script se vuelve a activar con enabled = true. OnDisable() se ejecuta cada vez que el objeto se oculta, el script se desactiva o el objeto se destruye.
Un portal que otro script abre y cierra con SetActive puede informar sobre sí mismo:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}El portal registra Portal open cuando comienza la escena. Al ocultarlo y volver a mostrarlo, se registran Portal closed y después Portal open, mientras que Awake() y Start() no se ejecutan por segunda vez. Por eso, el código que debe ejecutarse cada vez que aparece, como reiniciar un temporizador o contar las visitas, va en OnEnable(). Mientras el portal está oculto, su Update() no se ejecuta, por lo que la apertura y el cierre los realiza un script en otro objeto.
Desafío
IntermedioHaz que cada Switchable informe cuando se active y se desactive.
- Añade un campo
int count;yvoid OnEnable(): suma 1 acounty luego registraname + " on (" + count + ")", comoBubble on (2). - Añade
void OnDisable()que registrename + " off".
Pulsa «Jugar» y pulsa la barra espaciadora: la consola muestra Player on (1), luego Bubble on (1) y Bubble off. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Switchable : MonoBehaviour
{
public GameObject target;
void Update()
{
if (target != null && Input.GetKeyDown(KeyCode.Space))
{
target.SetActive(!target.activeSelf);
}
}
// Cada vez que se active este objeto: cuéntalo y registra "<name> on (<count>)"
// Cada vez que se desactive: registra "<name> off"
}
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