Equivocarse programando es parte del oficio, incluso para los mejores. Aprender a usar la consola de Unity para identificar y corregir errores te ahorra horas de frustración y convierte cada bug en una oportunidad de aprendizaje. Esta guía está pensada para quienes empiezan con C# en Unity y quieren debuguear como un profesional.
Qué tipos de errores puedes encontrar en Unity
Antes de abrir la consola, conviene saber qué tipo de error estás enfrentando. En desarrollo de videojuegos existen tres categorías y cada una se comporta distinto.
- Errores de compilación: ocurren cuando Unity no entiende tu código y bloquea el play del juego. Suelen venir de errores de tipografía, sobre todo porque escribimos en inglés sin ser nuestro idioma nativo [02:01].
- Errores en tiempo de ejecución: el código compila bien, pero al ejecutarse falla. Por ejemplo, si le pides a Unity poner mermelada en un sándwich y no hay mermelada, se rompe la ejecución [02:42].
- Errores de lógica: los más temidos. El juego corre, pero el comportamiento no es el esperado. Son los famosos bugs que aparecen incluso después del beta testing [03:13].
¿Qué es un error de compilación en Unity? Es un error que impide a Unity leer tu script. Aparece con un signo de exclamación rojo en la consola y bloquea el botón play hasta que lo corrijas.
Cómo identificar qué objeto imprime un mensaje en consola
Cuando varios objetos en escena ejecutan el mismo script, encontrar cuál disparó un mensaje puede ser complicado. La consola tiene una sobrecarga muy útil para esto.
El método Debug.Log acepta un segundo parámetro que puede ser un componente o un game object. Si pasas this, al hacer clic sobre el mensaje en la consola Unity selecciona automáticamente el objeto que lo generó [06:43].
csharp
void Start()
{
if (Random.Range(0f, 1f) < 0.3f)
{
Debug.Log("Gracias", this);
}
}
En el ejemplo de la clase, los pasajeros de un bus tienen un 30% de probabilidad de agradecer al conductor. La instrucción Random.Range devuelve un número aleatorio entre dos valores, y la f al final de 1f indica que se trata de un float para obtener decimales [05:20].
¿Para qué sirve la f en Random.Range(0f, 1f)? Le indica a Unity que use la sobrecarga de punto flotante. Sin la f, devolvería solo enteros y obtendrías ceros constantemente cuando el rango es 0 a 1.
Cómo leer y traducir un error de compilación
Los errores de compilación aparecen con un signo de exclamación rojo y no desaparecen al hacer clic. Mientras existan, Unity no te deja darle play al juego.
Al seleccionar el error, en la parte inferior de la consola aparece la descripción completa. Por ejemplo, un mensaje como Debug does not contain a definition for Log significa que escribiste mal el nombre del método. Recuerda que en C# los métodos llevan la primera letra en mayúscula, por eso Log funciona y log no [08:30].
Si el inglés se te complica, herramientas como Google Translate son aliadas válidas para descifrar el mensaje exacto.
Por qué cuidar el botón Error Pause
En la parte superior de la consola hay un botón llamado Error Pause que puede confundirte la primera vez. Cuando está activo, pausa automáticamente el juego en cuanto detecta un error en tiempo de ejecución.
Esto da la sensación de que todo se congeló sin razón. La solución es simple: desmárcalo y podrás seguir jugando [09:51]. Aun así, los errores en tiempo de ejecución merecen respeto porque pueden tener dependencias con otros scripts y tumbar el juego completo.
Cómo filtrar mensajes en una consola ruidosa
Un problema común al trabajar en equipo es que la consola se llena de mensajes ajenos. El método Update se ejecuta una vez por frame, y con hasta 200 frames por segundo, un solo Debug.Log mal puesto puede generar miles de líneas [10:50].
La consola de Unity ofrece dos herramientas para manejar este ruido:
- Botón Collapse: agrupa todos los mensajes idénticos en una sola línea con un contador. Útil cuando el mismo
Debug.Log se repite [11:30].
- Barra de búsqueda: filtra los mensajes que contienen un string específico. Si escribes una palabra clave, solo verás los mensajes que la incluyan [12:50].
Una práctica recomendada es anteponer tu nombre a tus mensajes de debug. Así, si tu equipo olvida limpiar los suyos antes del deadline, puedes filtrar la consola con tu nombre y ver únicamente lo que te interesa.
csharp
Debug.Log("Ruth: Gracias", this);
¿Cómo filtro mensajes en la consola de Unity? Escribe un texto en la barra de búsqueda de la consola y solo verás los Debug.Log que contengan ese texto. Combínalo con prefijos personalizados para aislar tus mensajes.
Buenas prácticas al debuguear con la consola
Más allá de las funciones técnicas, hay hábitos que marcan diferencia cuando debugueas en equipo o en proyectos grandes.
- Limpia tus mensajes de debug antes de hacer commit. Es un acto de respeto hacia tus colegas.
- Usa el segundo parámetro de
Debug.Log con this para localizar objetos rápidamente en la jerarquía.
- Diferencia entre los íconos: exclamación blanca para tus logs, exclamación roja para errores que bloquean la compilación.
- No le tengas miedo a los errores en tiempo de ejecución, pero atiéndelos pronto antes de que afecten otros sistemas.
Los bugs son normales incluso en juegos publicados, así que no te frustres cuando aparezcan. ¿Qué error te ha costado más trabajo encontrar en Unity? Cuéntame en los comentarios.