img-mensajes-error-unity-cipsa-1
20
septiembre
2019

Supongamos que ya eres de los que te aventuras a programar en Unity, a través de scripts. Enhorabuena por dar este paso. Seguro que las horas que pases detrás del código que elabores te van a dar una satisfacción infinita. Cuando tus players (GameObjects) se dispongan a destruir enemigos, con el ánimo de subir niveles y mejorar tu score, te darás cuenta de que no solo eres el actor, sino que estás diseñando tu propio videojuego.

Pero antes, deberás pasar por la programación. Piensa que detrás de los actores de tu escena (players, enemigos, zombis…) existe un guion -script- de lo que debe realizar cada uno.

Si ya has programado en algún otro lenguaje, ya sabrás que te puedes encontrar con dos tipos de errores.

img-mensajes-error-unity-cipsa-1

Errores de sintaxis

Los errores de sintaxis, se producen por no escribir correctamente las líneas de código, según las normas del lenguaje. Dicho error impedirá, tanto al compilador como al intérprete, traducir dicha instrucción y continuar el juego. Conociendo la sintaxis del lenguaje son relativamente fáciles de corregir. Además, en el mansaje que nos aparecerá en la consola, nos muestra información sobre el error; si hacemos doble clic en el mensaje nos llevará a la línea del error para corregirlo.

Errores de lógica

Los errores de lógica o ejecución, son más complejos y para ellos disponemos de una serie de herramientas, ya que el compilador no detecta dichos errores. El juego se podrá ir ejecutando para intentar detectar porque ha sucedido y encontrar una posible solución.

Diferentes ejemplos de errores de lógica pueden ser cuando hay un resultado, pero este no es el que esperamos. O cuando se “Cuelga” el programa, porque un objeto no está inicializado.

Como ayuda, te mostraré la lista de errores de ejecución más habituales, siendo muy interesante conocer su significado durante el transcurso de tu aprendizaje:

NullReferenceException: Object reference not set to an instance of an object:

Se produce cuando una variable hace referencia a un objeto, pero esta variable tiene el valor null Sucede si, por ejemplo, no se ha asignado ningún valor a dicha variable. O que se trate de una referencia a un GameObject que estableces mediante una búsqueda, pero que no ha sido localizada con éxito.

Deberemos comprobar que el objeto referenciado tenga un valor distinto al null antes de continuar.

Missing Component Exception: There is no “XXX” attached to “YYY” game object, but a script is trying to access it:

Ocurre cuando has accedido y utilizado un componente que no ha sido añadido al GameObject. El error no saltará en el momento de llamar al método GetComponent(), sino cuando trates de llamar algún método, variable o propiedad del componente,

Deberás comprobar que accedes al GameObject correcto y, desde la ventana inspector, de que el GameObject, disponga de dicho componente,

ArgumentException: The object you want to instantiate is null:

Se produce cuando estás intentando instanciar un prefab, pero la variable que instancia el prefab, tiene e valor null. Revisa que hayas asignado un valor a la variable prefab.

MissingReferenceException:The object of type “XXX” has been destroyed but you are still trying to Access it.

Se producirá en el momento que utilices una referencia a un objeto que ya ha sido destruido. Una manera de evitarlo es comprobar si el valor de la variable es diferente de nulo.

Unity 3D se ha ido convirtiendo en una de las formaciones más demandadas en la actualidad. Conoce más acerca de nuestro Curso de Programación de Videojuegos 3D con Unity 3D.

 

Autor

Jordi Llort

Profesor de Programación, Gestión, Videojuegos y SAP. Formador en CIPSA, con más de 30 años de experiencia.