OnEnable e OnDisable
Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 57 de 67.
OnEnable() é executado toda vez que um script se torna ativo: quando seu objeto aparece pela primeira vez (logo após 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 sobre si mesmo:
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, por isso a abertura e o fechamento são feitos por um script em outro objeto.
Desafio
MédioO script Switchable está no Player e em seu escudo, o Bubble, que começa oculto. No Player, target é o Bubble, e a tecla Space liga e desliga o Bubble; essa parte já está escrita.
Faça cada Switchable informar sobre si mesmo:
- cada vez que for ligado, some 1 a um contador e registre seu nome,
one o contador entre parênteses, por exemplo,Bubble on (2); - cada vez que for desligado, registre seu nome e
off:Bubble off.
Quando o jogo começar, o Player registra Player on (1): ele também é ligado. Pressione Play, pressione Space algumas vezes e, em seguida, Check.
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"
}
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
1Seu primeiro script
Olá, UnityPosicione o cuboMova a cada quadroGire a cada segundoConduza com as teclasRecapitulando: dirija o cubo4Vetores
Adicionando vetoresDireçõesEspaço local e espaço do mundoVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone7Projeto: Pegue a Estrela
O ApanhadorUma Estrela Cadente10O ciclo de vida dos scripts
Awake e StartUpdate e LateUpdateOnEnable e OnDisableA ordem do ciclo de vidaRevisão: registrador do ciclo de vida5Transformações e Hierarquia
Pais e FilhosEscalaObserve as CoisasMova-se em Direção a um PontoRevisão: Lua em Órbita6GameObjects e Componentes
Referências no InspectorObter um ComponenteComponentes AusentesAdicionar um ComponenteRequireComponentMostrar e OcultarRevisão: Interruptor de Luz