• Juegos
  • Industria
  • Recursos
  • Comunidad
  • Aprendizaje
  • Asistencia
Desarrollo
Motor de Unity
Crea juegos 2D y 3D para cualquier plataforma
DescargarPlanes y precios
Monetización
Compra dentro de la aplicación (IAP)
Descubre y gestiona IAP en todas las tiendas
Mediación
Maximiza los ingresos y optimiza la monetización
Calidad de anuncios
Protege la experiencia del usuario de tu aplicación
Tapjoy
Construye lealtad de usuarios a largo plazo
Todos los productos de monetización
Adquisición de usuarios
Adquisición de usuarios
Hazte descubrir y adquiere usuarios móviles
Unity Vector AI
Conecta a los jugadores con los juegos adecuados
Publicidad en el dispositivo Aura
Alcanza a los usuarios en el dispositivo en el momento de mayor compromiso
Todos los productos de crecimiento
Casos de uso
Colaboración 3D
Construye y revisa proyectos 3D en tiempo real
Capacitación envolvente
Capacitación en entornos envolventes
Experiencias del cliente
Crea experiencias interactivas en 3D
Todas las soluciones de la industria
Industrias
Fabricación
Logra la excelencia operativa
Venta minorista
Transforma las experiencias en tienda en experiencias en línea
Industria automotriz
Eleva la innovación y las experiencias en el automóvil
Todas las industrias
Biblioteca técnica
Documentación
Manuales de usuario oficiales y referencias de API
Herramientas para desarrolladores
Versiones de lanzamiento y rastreador de problemas
Hoja de ruta
Revisar características próximas
Glosario
Biblioteca de términos técnicos
Información útil
Casos de estudio
Historias de éxito en el mundo real
Guías de mejores prácticas
Consejos y trucos de expertos
Todos los recursos
Novedades
Blog
Actualizaciones, información y consejos técnicos
Novedades
Noticias, historias y centro de prensa
Centro de la comunidad
Discusiones
Discute, resuelve problemas y conéctate
Eventos
Eventos globales y locales
Historias de la comunidad
Hecho con Unity
Presentando a los creadores de Unity
Transmisiones en vivo
Únete a desarrolladores, creadores e insiders
Premios Unity
Celebrando a los creadores de Unity en todo el mundo
Para todos los niveles
Unity Learn
Domina las habilidades de Unity de forma gratuita
Capacitación profesional
Mejora tu equipo con entrenadores de Unity
¿No tienes experiencia con Unity?
Primeros pasos
Pon en marcha tu aprendizaje
Rutas esenciales de Unity
¿No tienes experiencia con Unity? Comienza tu viaje
Guías prácticas
Consejos prácticos y mejores prácticas
Educación
Para estudiantes
Impulsa tu carrera
Para docentes
Potencia tu enseñanza
Licencia gratuita para fines educativos
Lleva el poder de Unity a tu institución
Certificaciones
Demuestra tu dominio de Unity
Opciones de soporte
Obtener ayuda
Ayudándote a tener éxito con Unity
Planes de éxito
Alcanza tus metas más rápido con soporte experto
PREGUNTAS FRECUENTES
Respuestas a preguntas comunes
Contáctanos
Conéctate con nuestro equipo
Planes y precios
Idioma
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
Social
Moneda
Comprar
  • Productos
  • Unity Ads
  • Suscripción
  • Tienda de recursos de Unity
  • Distribuidores
Educación
  • Estudiantes
  • Instructores
  • Instituciones
  • Certificación
  • Learn
  • Programa de desarrollo de habilidades
Descargar
  • Unity Hub
  • Descargar archivo
  • Programa beta
Unity Labs
  • Laboratorios
  • Publicaciones
Recursos
  • Plataforma Learn
  • Comunidad
  • Documentación
  • Preguntas y respuestas Unity
  • PREGUNTAS FRECUENTES
  • Estado de servicios
  • Casos de estudio
  • Made with Unity
Unity
  • Nuestra empresa
  • Boletín
  • Blog
  • Eventos
  • Empleos
  • Ayuda
  • Prensa
  • Socios
  • Inversionistas
  • Afiliados
  • Seguridad
  • Impacto social
  • Inclusión y diversidad
  • Contacto
Copyright © 2025 Unity Technologies
  • Legal
  • Política de privacidad
  • Cookies
  • No quiero que se venda ni se comparta mi información personal

"Unity", los logotipos de Unity y otras marcas comerciales de Unity son marcas comerciales o marcas comerciales registradas de Unity Technologies o de sus empresas afiliadas en los Estados Unidos y el resto del mundo (más información aquí). Los demás nombres o marcas son marcas comerciales de sus respectivos propietarios.

Hero background image

Acelera y mejora las pruebas de calidad con la clase Debug de Unity

Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.
Haz clic aquí.

Sigue leyendo para aprender a mejorar tu calidad y tu proceso de depuración con la clase Debug de Unity.

Si bien es posible que ya estés familiarizado con la función Debug.Log, la clase Unity Debug admite muchas otras funciones útiles que pueden ayudarte a acelerar las pruebas y la depuración. Esta página explica cómo usar la clase Debug para la visualización de gizmos en las vistas de escena y juego, para pausar el modo Play en el Editor desde el script y más consejos.

  • Errores, advertencias y mensajes
  • Configura el rastro de tu stack
  • Usar LogFormat para mostrar variables
  • Parámetros adicionales
  • Uso de Debug.Assert
  • Uso de Debug.Break
  • Debug.DrawLine.
  • Debug.DrawRay.
  • Uso de Gizmos
  • Lanzamiento de excepciones
  • Más recursos

Errores, advertencias y mensajes

Si tienes experiencia con Unity, probablemente usaste la ventana de consola para mostrar los errores, las advertencias y otros mensajes generados por el Editor. También imprimiste tus propios mensajes en la consola con la clase Debug.

Pero no te limitas solo al mensaje Debug.Log. Si creas cadenas de salida en la ventana de la consola, puedes especificar uno de tres tipos (error, advertencia y mensaje), cada uno con su propio tipo de ícono.

Las tres variantes son:

  • Debug.Log («Este es un mensaje de registro»).
  • Debug.LogWarning («Este es un mensaje de advertencia»).
  • Debug.LogError («Este es un mensaje de error»).

Puedes usar la ventana Consola para filtrar los mensajes según tus preferencias. También puedes aprovechar la opción Error Pause (pausa de error) habilitada en la ventana Console, ya que cualquier error que escribas en la consola a través de la clase Debug hará que el modo Play de Unity se detenga.

Todo lo que se envía a la ventana de la consola, ya sea por Unity o tus propios mensajes, se agrega a un archivo de registro al que puedes hacer referencia para ver dónde ocurrieron los problemas en tu aplicación. Cada sistema operativo almacena los archivos de registro en diferentes ubicaciones, por lo que consulta la documentación para ver las especificaciones de cada sistema.

Cómo depurar el código del juego con Roslyn Analyzers
Puedes encontrar opciones de seguimiento de la pila en Project Settings > Player.
LAS OPCIONES DE STACK TRACE SE ENCUENTRAN EN PROJECT SETTINGS > PLAYER.

Configura el rastro de tu stack

Cuando se lanza un error o una excepción, la ventana de la consola muestra el rastro de la pila junto con el mensaje de error para ayudarte a entender cómo ocurrió el error y dónde se originó. Si bien Debug.Log te permite enviar un mensaje a la consola, también puedes configurar el nivel de detalle que se muestra en el stack trace.

De forma predeterminada, la salida de la consola se vincula con la línea de código que generó el mensaje, lo que permite identificar fácilmente la línea, el método o la secuencia de llamadas a la función que provocaron la aparición de la entrada.

Si el script no se abre en el IDE elegido, ve a Archivo > Preferencias > Herramientas externasy selecciona el «Editor de scripts externo» en el menú desplegable.

Puedes configurar la información que se muestra en el stack trace a través de File > Build Settings... > Player Settings ... > Other Settings in the Editor.

Hay disponibles las siguientes opciones para cada tipo de registro:

  • Ninguno: No se enviará ningún rastro de pila al registro.
  • ScriptOnly: Solo se enviará el rastro de stack administrado. Esta es la opción predeterminada si no cambiaste la configuración.
  • Completo: Se registrará el seguimiento de pila nativo y administrado.

Utiliza la función de búsqueda en la consola si tu registro se aglomera. Al escribir un término de búsqueda, la consola filtra los mensajes para mostrar solo aquellos que contienen texto coincidente.

Para controlar cuántas líneas de cada entrada son visibles en la lista, haz clic en el botón del menú de la consola y selecciona Log Entry > [X] Lines en el menú, donde [X] es la cantidad de líneas que se mostrarán para cada entrada.

Usar LogFormat para mostrar variables

El método String.Format en C# te permite crear una cadena con datos variables con formato integrado. La clase Debug tiene Debug.LogFormat, que usa la misma sintaxis.

El primer parámetro es la cadena de mensajes con formato. Al incluir un valor de índice en los corchetes, este se reemplazará por el parámetro index-1 utilizando su método ToString, si existe, o la conversión de cadenas del sistema. En el ejemplo de código anterior, la línea 14, {0}, se reemplazará por origin.ToString().

Un ejemplo más complejo es el siguiente:

Debug.LogFormat("Al inicio transform.position={0}, transform.rotation={1}", transform.position, transform.rotation);

{0} se reemplazará por el parámetro 1, transform.position y {1} se reemplazará por el parámetro 2, transform.rotation. En cada caso se utilizará el método ToString de las propiedades Vector3 y Quaternion. El resultado será el siguiente:

«El origen es (0.00, 0.00, 0.00)

UnityEngine.Debug:LogFormat (string,object[])”

Parámetros adicionales

También puedes proporcionar un segundo parámetro opcional a estos métodos de registro para indicar que el mensaje está asociado con un GameObject en particular:

Debug.LogWarning("¡Vengo en paz!", this.gameObject);

Cuando muestra datos de variables con formato, existen versiones de advertencia y error de Debug.LogFormat:

  • Debug.LogWarningFormat("El valor de Cube.position.x es {0:0.00}", transform.position.x)
  • Debug.LogErrorFormat("El valor de Cube.position.x es {0:0.00}", transform.position.x)

Si envías un float value a la consola con Debug.Logformat, la pantalla predeterminada mostrará seis números después del punto decimal. Puedes controlar este comportamiento con una cadena de formato numérico personalizada.

Debug.LogFormat("pi = {0:0.00}", Mathf.PI);

Al usar un punto, la cadena de formato 0.00 mostrará la parte entera de un valor, el separador decimal y dos números después del separador. El último número se redondeará en función del siguiente valor utilizando el método conocido 4 al suelo, 5 al cielo.

En este ejemplo, el resultado sería: pi = 3.14

Cómo ejecutar pruebas automatizadas para tus juegos con Unity Test Framework

Uso de Debug.Assert

Debug.Assert() es similar al método Debug.Log(), pero en lugar de registrar un mensaje en la consola, prueba una condición y muestra un mensaje de error si la condición es falsa. Se utiliza para validar suposiciones y detectar errores durante el desarrollo.

Las afirmaciones son una excelente manera de verificar que tu programa no entre en un estado inesperado. Son como insertar un registro dentro de una sentencia condicional. Cuando estás trabajando en un método que se basa en la asignación de una propiedad de clase, una aserción puede ayudarte a rastrear los errores.

Cuando se llama a Debug.Assert(), se necesitan dos parámetros: una condición para hacer la prueba y un mensaje opcional para mostrar si la condición es falsa. Si la condición es cierta, no sucede nada y el programa continúa ejecutándose. Si la condición es falsa, el programa deja de ejecutarse y se muestra un mensaje de error en el Editor.

void SetColor(color del color)

{

Debug.Assert(material != null, "ChangeColor: material not assign");

material.SetColor("_Color", color);

}

Si llamas a SetColor y el material no está asignado, se mostrará "SetColor: material no asignado" en la consola.

Uso de Debug.Break

Debug.Break() es un método proporcionado por la clase Debug de Unity que se utiliza para pausar la ejecución de tu juego e introducir el depurador en el punto actual de tu código. Te permite inspeccionar el estado de tu juego y revisar tu código línea por línea para encontrar y corregir errores.

Cuando se llama a Debug.Break(), se detiene la ejecución de tu juego y se abre la ventana Debugger. Esto te permite examinar el estado de tu juego y depurar tu código según sea necesario. Puedes usar el depurador para revisar tu código, establecer puntos de salida e inspeccionar variables y objetos en la memoria.

Por ejemplo, es posible que desees detener un juego cuando un NPC esté a una distancia objetivo del personaje del jugador. Cuando el juego se rompe, puedes examinar su estado en el Inspector:

float dist = Vector3.Distance(transform.position, npc.position);

if ( dist < 5) Debug.Break();

Debug.DrawLine en la vista de escena
DEBUG.DRAWLINE EN LA VISTA DE ESCENA

Debug.DrawLine.

Debug.DrawLine y Debug.DrawRay son dos métodos proporcionados por la clase Debug de Unity que se utilizan para la depuración visual. Son útiles para probar y visualizar código relacionado con la física, como colisiones y Raycasts. Ambas te permiten dibujar una línea de color que sea visible tanto en la vista de Juego como en la de Escena. Por ejemplo, puedes usar Debug.DrawRay para visualizar la trayectoria de una bala o la trayectoria de un rayo láser y usar Debug.DrawLine para visualizar los límites de un collider o el movimiento de un objeto.

Debug.DrawLine se utiliza para dibujar una línea recta entre dos puntos de la escena:

Debug.DrawLine(transform.position, target.position, Color.white, 0, false);

Toma entre dos y cinco parámetros: un punto inicial, un punto final y un color opcional. Por ejemplo, el siguiente código dibujaría una línea blanca entre los puntos inicial y final:

public static void DrawLine(Vector3 start, Vector3 end, Color color = Color.white, float duration = 0.0f, bool depthTest = true);

Parámetros

  • inicio: Punto del espacio del mundo donde debería comenzar la línea
  • final: Punto del espacio del mundo donde la línea debe terminar
  • color: El color de la línea
  • duración: Tiempo en segundos para mostrar la línea. 0 muestra la línea para un solo frame
  • depthTest: Si la línea está oculta por objetos en primer plano,

En el ejemplo de código, el método Update de un script MonoBehaviour adjunto al GameObject Skeleton da como resultado la imagen que se ve arriba. La línea solo es visible en la vista de Juego si los gizmos están habilitados. Haz clic en el botón Gizmo en la esquina superior derecha del panel de vista de Juego para activarlos. La línea también es visible en la vista de escena.

Debug.DrawRay.

La alternativa a DrawLine es DrawRay. Debug.DrawRay se utiliza para dibujar un rayo en la escena, a partir de un origen especificado y extendiéndose en una dirección especificada. De forma predeterminada, es un rayo infinito. Cuando el rayo dibujado por Debug.DrawRay() entra en contacto con un Collider, este se detiene en el punto de intersección y deja de existir. Este comportamiento es el mismo que el de un Raycast en Unity, utilizado para detectar colisiones entre objetos en una escena.

Aquí, el segundo parámetro define una dirección y una longitud de la línea. La línea se dibujará de principio a principio + dir:

public static void DrawRay(Vector3 start, Vector3 dir, Color color = Color.white, float duration = 0.0f, bool depthTest = true);

Los parámetros del ejemplo de código son los siguientes:

  • inicio: Punto del espacio del mundo donde debería comenzar la línea
  • dir: Dirección y longitud en el espacio del mundo de la línea
  • color: El color de la línea
  • duración: Tiempo en segundos para mostrar la línea; 0 muestra la línea para un solo frame
  • depthTest: Si la línea está oculta por objetos en primer plano,

Este es otro ejemplo de código:

Vector3 dir = transform.TransformDirection(Vector3.forward) * 3;Debug.DrawRay(transform.position, dir, Color.white, 0, false);

En este ejemplo de código, el método Update de un script MonoBehaviour adjunto al GameObject Skeleton muestra la imagen de arriba. Un rayo con una longitud puede ser útil para depurar pruebas de proximidad. Aquí, la longitud del rayo es de 3 unidades de mundo. Si un ataque debe comenzar en 3 unidades, entonces tendrás una gran prueba visual de cuánto duran 3 unidades en tu escena.

Pruebas y consejos de control de calidad para proyectos Unity

Mostrando un Gizmo
MOSTRAR UN GIZMO

Uso de Gizmos

Los gizmos son una poderosa herramienta para la depuración visual en Unity. Te permiten dibujar formas, líneas y texto 2D y 3D simples en la vista de escena, lo que te permite ver y entender fácilmente lo que está sucediendo en el mundo de tu juego.

Puedes dibujar formas y líneas simples en la vista de escena con solo unas líneas de código. Esto las convierte en una herramienta ideal para prototipar y probar rápidamente la mecánica de tu juego. Se dibujan en tiempo real, por lo que puedes ver los resultados de tus cambios de código de inmediato y hacer los cambios necesarios.

Los gizmos indican mecánicas de juego visualmente complejas que podrían ser difíciles de entender solo a través del código. Por ejemplo, puedes usar Gizmos para dibujar una línea que muestre la trayectoria de un proyectil o para visualizar los límites de una zona de activación, como se ve en la imagen de arriba.

Utiliza gizmos para crear ayudas visuales que faciliten a otros miembros del equipo la comprensión de tu código y la mecánica de tu juego.

Los gizmos tienen poco impacto en el rendimiento, por lo que puedes usarlos libremente sin ralentizar el rendimiento.

El ícono del gizmo se encuentra en la esquina superior derecha de las vistas Escena y Juego. Para agregar un gizmo personalizado, debes agregar un script que incluya una rellamada a OnDrawGizmos, como se muestra en el siguiente ejemplo de código. Este script dibujará un cubo de wireframe colocado 3 unidades de mundo hacia adelante de la posición del GameObject. El tamaño del cubo se define por el tamaño de la propiedad de la clase del tipo Vector3: public Vector3 vsize = new Vector3(1f, 1f, 1f);

void OnDrawGizmos()

{

// Dibujar una esfera amarilla en la posición del transform

Gizmos.color = Color.yellow;

Vector3 position = transform.position + transform.TransformDirection(Vector3.forward) * 3;

Gizmos.DrawWireCube(position, vsize);

}

Controla la visibilidad haciendo clic en el menú desplegable Gizmos. Se mostrarán todos los scripts con rellamada de OnDrawGizmos.

Revisa la documentación para obtener más información sobre otros métodos útiles con la clase de Gizmo.

Lanzamiento de excepciones

Lanzar una excepción es una técnica utilizada en programación para indicar que se ha producido un error o una situación excepcional durante la ejecución de un programa. Puedes usar este método para evitar que el subproceso se siga ejecutando y evitar daños adicionales.

En Unity, lanzar una excepción se usa de la misma manera que en otros lenguajes de programación.

Si se lanza una excepción y el código no la captura ni la administra, la ejecución del programa se detendrá y, por lo general, se te expulsará de la aplicación y regresarás al sistema operativo. En Unity, la ejecución del programa se detiene inmediatamente y el entorno de tiempo de ejecución busca un bloque de "captura" que pueda manejar la excepción. Si no se encuentra ningún bloqueo de captura, el programa terminará y la excepción se registrará en la consola.

Lanzar excepciones puede ser útil, ya que esto te permite separar la lógica de manejo de errores del resto de la lógica de tu programa, lo que puede contribuir a escribir código más limpio. Al hacer excepciones, puedes indicarle a la persona que llama que algo salió mal sin tener que depender de los valores devueltos o el estado global para comunicar el error.

Para lanzar una excepción en Unity, puedes usar la palabra clave lanzamiento seguida de un objeto de excepción. Este es un ejemplo:

if (target == null)

{

lanzar un nuevo System.NullReferenceException("target not set!");

}

Cuando ejecutas tu código en el Editor, detecta los errores que se producen y hace un Debug.LogError() en lugar de bloquear Unity o la aplicación.

Usar excepciones en Unity te permite detectar los errores en las primeras etapas. También puede facilitar la depuración, ya que te brinda más información sobre dónde ocurren los errores y qué los causó.

pestaña final

Más recursos

Obtén mucho más información sobre las pruebas, la depuración y la mejora del rendimiento de tu proyecto Unity en estos artículos:

  • Cómo depurar el código del juego con Roslyn Analyzers
  • Cómo ejecutar pruebas automatizadas para tus juegos con Unity Test Framework
  • Agiliza tu flujo de trabajo de depuración con Microsoft Visual Studio Code
  • Cómo depurar tu código con Microsoft Visual Studio 2022
  • Pruebas y consejos de control de calidad para proyectos Unity

Descubre las prácticas recomendadas e instrucciones avanzadas para desarrolladores Unity con estos libros electrónicos:

  • Guía definitiva para la generación de perfiles de juegos Unity
  • Optimiza el rendimiento de tu juego para dispositivos móviles
  • Optimiza el rendimiento de tus juegos para consola y PC

Encuentra muchos más recursos avanzados en el centro de prácticas recomendadas de Unity.