Maneras de registrar y personalizar mensajes de depuración para la consola de Unity

Lo más básico que puede hacer en programación es imprimir una cadena en la consola. Unity es lo mismo: puede escribir una cadena en la consola de Unity Editor, y hay diferentes tipos de mensajes de registro y formas que puede personalizar para facilitar la depuración.

El método de registro más común es el método Debug.Log() que imprime una cadena regular en la consola en Unity en el color de texto predeterminado. También hay otros 2 tipos de registros llamados Debug.LogWarning() y Debug.LogError() que imprimen una cadena en amarillo y rojo, respectivamente.

Saber cómo usar los métodos de registro y cómo interactúan con la consola de Unity hará que su vida sea mucho más fácil. Lea más a continuación para aprender cómo personalizar los mensajes de depuración.

Tabla de contenido

Registro de depuración

Debug.Log es la forma más básica y sencilla de imprimir un valor en la consola de Unity.

Simplemente proporcione una cadena o cualquier valor que se pueda convertir en una cadena y mostrará el mensaje en la consola.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { Debug.Log("This string will be printed to the console."); } }

Code language: C# (cs)

El resultado se verá así en la consola:

Al hacer clic en el mensaje, aparecerá una pequeña sección de detalles que le indicará de dónde proviene el mensaje.

Por ejemplo, el mensaje en la imagen de arriba está en la línea número 9 en el script llamado TestScript.

Además, el último mensaje de la consola también se mostrará en la esquina inferior izquierda de Unity Editor.

El método Debug.Log puede imprimir el valor de cualquier cosa siempre que se pueda convertir en una cadena.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { float someNumber = 420.69f; bool isVeryCool = true; Debug.Log(someNumber); Debug.Log(someNumber + " BLAZE IT"); Debug.Log(isVeryCool); } }

Code language: C# (cs)

El código anterior imprimirá 3 líneas de mensajes en la consola de Unity:

También puede vincular un objeto de juego relacionado con un mensaje de la consola para que sea más fácil encontrar de dónde proviene el mensaje pasando un objeto como el segundo parámetro del método Debug.Log.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { int someNumber = 1234; Debug.Log("This is a number: " + someNumber, transform); } }

Code language: C# (cs)

Esto resaltará el objeto asociado en la ventana de jerarquía cuando haga clic en el mensaje en la ventana de la consola.

Además de registrar mensajes en la consola de Unity, Debug.Log (y otros métodos de registro) también registra mensajes en archivos de registro de su juego. Puede encontrar información sobre dónde encontrar estos archivos de registro para cada plataforma aquí.

Debug.LogWarning

Debug.LogWarning funciona de la misma manera que Debug.Log, pero el mensaje impreso tendrá un icono de advertencia y el color del mensaje en la esquina inferior izquierda de Unity Editor será amarillo.

Este generalmente se usa para dar una advertencia de que algo podría no estar funcionando correctamente o que falta algo en el código pero aún puede funcionar. Algo como eso. Entiendes la idea.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { Debug.LogWarning("Setting the width to more than 300px will result in a drop in performance."); } }

Code language: C# (cs)

Esto registrará un mensaje con un icono de advertencia en la consola.

El mensaje de advertencia que se muestra en la esquina inferior izquierda de Unity Editor será amarillo.

También se puede pasar un objeto al método para vincular el objeto con el mensaje de advertencia, al igual que Debug.Log.

Debug.LogError

El método Debug.LogError se comporta de la misma manera que el método Debug.Log y el método Debug.LogWarning, pero el mensaje registrado en la consola de Unity tendrá un ícono de error y el mensaje en la parte inferior del editor será rojo.

Este método de registro se usa comúnmente para mostrar mensajes de error de descifrado de código en la consola.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { Debug.LogError("Failed to initialize player's default parameters."); } }

Code language: C# (cs)

El mensaje impreso en la consola tendrá un icono de error adjunto.

El mensaje que se muestra en la esquina inferior izquierda de Unity Editor tendrá un color de texto rojo oscuro.

También se puede pasar un objeto al método para vincular el objeto con el mensaje de error, al igual que Debug.Log.

Debug.LogException

La Debug.LogException se usa para registrar excepciones en la consola de Unity. Funciona de la misma manera que el Debug.LogError normal, excepto que se le proporciona un objeto de excepción en lugar de una cadena.

Utiliza esto cuando desea que el error sea más específico o desea capturar una excepción e imprimirla en la consola manualmente.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { Debug.LogException( new MissingComponentException( "RigidBody2D is missing in " + transform.gameObject.name + ". RigidBody2D is required for this script to work properly." ), transform ); } }

Code language: C# (cs)

Esto registrará una excepción en la consola con un icono de error.

Este mensaje se mostrará como texto rojo oscuro en la esquina inferior izquierda del Editor de Unity.

Puede ser un poco difícil de ver ya que estoy usando el modo oscuro, pero está ahí.

Dar formato a los mensajes de registro de depuración con marcado de texto enriquecido

Todas las variantes de Debug.Log se pueden personalizar aún más mediante marcado de texto enriquecido. Puede hacer varias cosas, como poner una palabra en negrita o cambiar el color de un mensaje.

La sintaxis del marcado de texto enriquecido es similar al marcado HTML, pero no del todo igual.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { Debug.Log("I do <b>NOT</b> like ducks."); Debug.LogWarning("Something <i>weird</i> might happen. Be careful."); Debug.LogError("This function stopped working <b><i>again</i></b>."); Debug.Log("<color=red>Red</color>/<color=blue>Blue</color>/<color=green>Green</color>"); } }

Code language: C# (cs)

Si está familiarizado con HTML, este debería ser fácil de entender. Para obtener más información sobre el texto enriquecido, visite la página del Manual oficial de texto enriquecido de Unity.

Formato compuesto

Todas las variantes de Debug.Log vienen con versiones Format de sí mismas que permiten un formateo más complejo llamado Formateo compuesto.

Estos métodos son:

  • Debug.LogFormat
  • Debug.LogWarningFormat
  • Debug.LogErrorFormat

using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestScript : MonoBehaviour { private void Start() { string[] names = { "Chloe", "Angelica", "Yufine", "Tamarinne" }; float[] money = { 1250f, 777f, 240.5723f, 300f }; for (int i = 0; i < names.Length; i++) { Debug.LogFormat("{0} | {1:C2}", names[i], money[i]); } } }

Code language: C# (cs)

Para obtener más información sobre el formato compuesto, consulte la documentación de MSDN sobre el formato compuesto.

Para ir finalizando

Saber cómo registrar mensajes en la consola de diferentes maneras puede facilitar mucho el proceso de depuración, tanto para usted como para quienes trabajan con usted.

Recomiendo probar esos métodos de registro usted mismo en el editor para que sea más fácil de entender.

Espero que esta haya sido una buena lectura para ti. Deja un comentario si tienes sugerencias o me falta algo. ¡Y nos vemos de nuevo en el próximo artículo!

¡Salud!

Atribución

Ícono de consola hecho por Freepik de www.flaticon.com