OnEnable e OnDisable
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 72 de 85.
OnEnable() é executado toda vez que um script se torna ativo: quando seu objeto aparece pela primeira vez (logo depois de Awake()) e novamente cada vez que o objeto é exibido com SetActive(true) ou o script é reativado com enabled = true. OnDisable() é executado cada vez que o objeto é ocultado, o script é desativado ou o objeto é destruído.
Um portal que outro script abre e fecha com SetActive pode informar seu próprio estado:
void OnEnable()
{
Debug.Log("Portal open");
}
void OnDisable()
{
Debug.Log("Portal closed");
}O portal registra Portal open quando a cena começa. Ocultá-lo e exibi-lo novamente registra Portal closed e, em seguida, Portal open, enquanto Awake() e Start() não são executados uma segunda vez. Portanto, o código que precisa ser executado a cada aparição, como reiniciar um cronômetro ou contar visitas, deve ficar em OnEnable(). Enquanto o portal está oculto, seu Update() não é executado, e é por isso que a abertura e o fechamento são feitos por um script em outro objeto.
Desafio
MédioFaça com que cada Switchable informe quando é ativado e desativado.
- Adicione um campo
int count;evoid OnEnable(): some 1 acounte, em seguida, registrename + " on (" + count + ")", comoBubble on (2). - Adicione
void OnDisable()para registrarname + " off".
Pressione “Jogar” e pressione Espaço: o Console mostra Player on (1), depois Bubble on (1) e Bubble off. Em seguida, clique em “Verificar”.
Experimente você mesmo
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 este objeto for ativado: conte a ativação e registre "<name> on (<count>)"
// Cada vez que ele for desativado: registre "<name> off"
}
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 Cadente12O ciclo de vida dos scripts
Awake e StartUpdate e LateUpdateOnEnable e OnDisableA ordem do ciclo de vidaRecapitulação: registrador do ciclo de vidaPratique por conta própria: Playground de Unity