OnDisable, OnDestroy, OnMouseDown

Clase 3 de 24Curso de Introducción a Unity: Scripting

Resumen

¿Cómo utilizar los eventos onDisable, onDestroy y onMouseDown en Unity?

Entender y utilizar eventos específicos, como onDisable, onDestroy y onMouseDown en Unity, puede transformar tu capacidad para desarrollar experiencias de usuario dinámicas e interactivas. Estos eventos te permiten manejar distintas acciones en tus GameObjects de modo efectivo y personalizado.

¿Qué hace el evento onMouseDown?

El evento onMouseDown es esencial para manejar interacciones del usuario con los GameObjects en Unity. Este método detecta clics del mouse sobre el objeto en cuestión, proporcionando una forma directa de capturar la interacción del jugador.

  • Implementación sencilla: Añade un script al GameObject deseado y utiliza el método onMouseDown para crear respuestas al clic.
  • Importancia del collider: Asegúrate de que el GameObject tenga un collider. Sin él, Unity no detecta clics porque los eventos dependen de los colliders.
  • Prueba de funcionalidad: Al hacer clic sobre el objeto, debería imprimirse un mensaje en la consola, por ejemplo, "Recibí un clic".
void OnMouseDown() {
    Debug.Log("Recibí un clic");
}

Consejo: Si notas que un objeto no responde a los clics, verifica que nada lo esté obstruyendo visualmente, lo cual podría causar que los clics interfieran con otros objetos.

¿Cómo funciona el evento onDisable?

El evento onDisable se invoca automáticamente cuando un objeto o su componente es desactivado. Esto permite llevar un seguimiento de cuándo un objeto deja de estar activo en el juego.

  • Uso del evento: Ideal para realizar acciones como guardar datos, detener animaciones o simplemente mostrar mensajes.
  • Implementación en Unity: Cuando se desactiva el componente desde el inspector, Unity ejecuta el mensaje asociado al onDisable.
  • Interacciones posibles: El evento se activa indistintamente si desactivas el GameObject completo o solo uno de sus componentes.
void OnDisable() {
    Debug.Log("desaparezco");
}

Dato curioso: Aunque a veces pareciera que un objeto sigue visible, onDisable puede indicar que, bajo el capó, el objeto ha sido marcado para dejar de estar activo.

¿Qué implica el evento onDestroy?

onDestroy es crucial para gestionar la lógica de destrucción de objetos. Este evento se invoca cuando un objeto está a punto de ser eliminado de la escena.

  • Funcionalidad esencial: Utiliza este evento para liberar recursos, guardar estados o realizar cualquier registro importante antes de la eliminación de un objeto.
  • Comparable con onDisable: Antes de destruir un objeto, el evento onDisable se invoca. Primero se desactiva antes de ser destruido.
  • Uso práctico: Útil cuando detienes un juego, ya que Unity destruye automáticamente los objetos que están en la escena para reiniciarlos al salir del modo de juego.
void OnDestroy() {
    Debug.Log("No me quiero ir, señor Stark");
}

Nota importante: Adquiere el hábito de comprender cuándo Unity está en modo de edición versus modo de juego, ya que los estados de los objetos pueden variar drásticamente entre estos dos.

Recomendaciones prácticas para evitar errores

Cuando trabajes con estos eventos, ten en cuenta las siguientes recomendaciones para un mejor manejo de tus scripts:

  • Verifica colisiones y stack: Siempre verifica colisiones cuando uses onMouseDown para asegurar la correcta detección de los clics.
  • Comprende la temporalidad: Recuerda que los componentes y GameObjects tienen ciclos de vida distintos que pueden influir en cómo se ejecutan estos eventos.
  • Cuidado con la destrucción de objetos: Especialmente al detener el juego, ya que podría dar lugar a situaciones imprevistas si los recursos o estados no se liberan adecuadamente.

A medida que experimentas con estos eventos, te alentarás a seguir explorando y desarrollando tus habilidades. La práctica constante te permitirá dominar estos eventos y enriquecer tus proyectos en Unity. Sigue aprendiendo y experimentando, ¡tu camino hacia el desarrollo de videojuegos apenas comienza!