Advertisement
  1. Game Development
  2. Workflow

Dolores de cabeza con Unity

Scroll to top
Read Time: 6 min

() translation by (you can also view the original English article)

Unity es una plataforma increíble, y continúa creciendo. Como muchos otros desarrolladores de videojuegos, he cambiado a Unity como mi plataforma principal de desarrollo. Mientras que Unity es uno de los programas de desarrollo de videojuego más fácil de usar que he tenido el placer de usar, me ha dado algunos dolores de cabeza. He estado trabajando en mitigar estos problemas y documentar estas pruebas, y en este artículo quiero compartir mi experiencia.

Artículos relacionados

Entender el Inspector

El Inspector de Unity es donde puedes encontrar toda la información sobre el objeto seleccionado en la vista de escena.

unity-growing-pains-understanding-the-inspectorunity-growing-pains-understanding-the-inspectorunity-growing-pains-understanding-the-inspector

Si creas un cubo y luego lo seleccionas, el Inspector mostrará su componente Transform, que mostrará las variables x, y y z de la posición, rotación y escala de dicho cubo. Si has creado un enemigo más complejo, al seleccionarlo mostrará toda la información de ese objeto, que puede incluir cualquier número de componentes añadidos.

Hay una pega: Para poder ver una variable en el Inspector, debe hacerse pública en el script al que pertenece: Si quieres ver la propiedad fireSpeed de un componente conectado a su objeto, entonces fireSpeed debe ser declarado como una variable pública.

Aquí es donde el poder real del Inspector entra en juego, y hay otro truco debemos aprender. Cualquier propiedad que puede observarse en el Inspector puede ser editada para ese objeto. Si tu script establece un valor predeterminado para una propiedad mediante código, es muy importante saber que el valor de Inspector lo anulará. Esto significa que si la variable fireSpeed tiene un valor predeterminado de 4, y se establece en 8 en el Inspector, entonces la variable fireSpeed para ese objeto permanecerá como 8, incluso si cambiamos el valor 4 en el script y lo guardamos.

(Tenga en cuenta que establecer la variable en un ámbito que no sea público, privado o protegido, se revertirá la propiedad al valor del script y se oculta el valor en el Inspector.)

El último truco que tienes que recordar es que los valores editados en el Inspector en la vista de escena cuando el juego no está en ejecución se guardan de forma automática, mientras que valores modificados en el Inspector mientras el juego está funcionando (sí, pueden editar variables durante la ejecución del juego!) volverá a sus valores, una vez que termines de probar el juego.

Estos pocos detalles no son demasiados complejos, pero son muy importante, si no tenemos todo esto en cuenta depuración puede llegar a ser muy compleja.


Prefabs

Los Prefabs son uno de los aspectos más importantes de Unity, pero pueden llegar a ser un poco confusos al principio, ya que hay algunas pequeñas peculiaridades que no son muy evidentes a primera vista.

Un prefab es esencialmente una definición predefinida de un objeto, un modelo, a efectos prácticos, muy parecido a una clase en programación orientada a objetos. Los prefabs pueden estar compuesto por cualquier número de objetos de juego, gráficos, componentes, etc. Su mejor uso es cuando quieras un montón de instancias de un objeto y necesites ligeras alteraciones de ese objeto específico.

unity-growing-pains-prefabsunity-growing-pains-prefabsunity-growing-pains-prefabs

Si tienes muchos prefabs en la escena y modificas la definición del prefab, se actualizarán todas las instancias de de la escena. Alternativamente, si usted modifica una instancia específica, y pulsa aplicar (Apply), todas las instancias del prefab (así como su definición) se actualizarán a la configuración de esa instancia específica. Si ha cambiado las variables de una instancia en el  Inspector u otras propiedades, puede presionar Revert para deshacer los cambios y volver a la configuración de la definición del prefab.


Navegando por el espacio 3D del Editor

Una de las primeras cosas con las que me peleé, incluso después de ver un montón de tutoriales en vídeo, fue cómo navegar el espacio 3D del editor. Era, sin duda, un completo novato en moverme en espacios 3D sin estar centrados en un personaje (como por ejemplo al jugar un juego en primera o tercera persona), pero me encontré con movimiento un poco raro y complicado.

No es tan malo una vez que te acostumbras a él, pero tener un poco más de información el principio habría sido genial, así que aquí están algunos comandos útiles para navegar correctamente el espacio 3D del editor:

unity-growing-pains-navigating-3dunity-growing-pains-navigating-3dunity-growing-pains-navigating-3d
  • Arrastrar con el botón izquierdo: mire a su alrededor el espacio 3D libremente, sin moverse.
  • Clic en objeto + F: foco directamente sobre un objeto, mueve la cámara justo delante de él.
  • Alt + Arrastrar con botón derecho: girar alrededor del objeto enfocado actualmente.
  • Alt + Arrastras con el botón derecho: Varios tipos de Zoom.
  • Rueda de desplazamiento hacia adelante / atrás: Acercar y alejar el Zoom de la vista.
  • Arrastrar con la rueda de desplazamiento: moverse libremente hacia arriba, abajo, izquierda y a la derecha, en el espacio 3D.
  • Las teclas de cursores: Mueva directamente hacia adelante, atrás, izquierda o derecha.

Llevarse bien con Z

Independientemente de si estás haciendo un juego 2D o un juego en 3D, tendrás que familiarizarte con el legendario eje Z. Muchas clases y funciones hará uso del eje z, y aunque no quieras modificar la posición de un objeto en el eje z, debe ser consciente de el y el papel que desempeña en diversas funciones.

El aspecto más común del eje z, y que no puede evitarse, es su uso en la clase Vector3. Todos los objetos en Unity tiene un componente Transform, que es lo que contiene la información de rotación, posición, y todos los datos relacionados. En Unity, tranform.position es un Vector3, que contiene los ejes x, y y z de coordenadas del objeto.

Incluso si el juego es 2D, necesitará trabajar con la clase Vector3, y por lo tanto debe ser consciente de este parámetro. Lo más fácil de hacer, en este caso, es establecer el parámetro z  a 0, o para establecerlo en el valor z actual podemos leerlo desde  transform.position.z.


Movimiento básico

Como dije anteriormente, se almacena toda la información relacionada con el movimiento en el componente Transform. Ah, pero no puedes simplemente escribir en transform.position Vector3 — al menos no en C#. En su lugar, tienes que crear un nuevo Vector3, definir los valores del Vector3 (x, y y z) y asignar al transform.position ell Vector3, como vamos a continuación:

1
//We can't write to transform.position, so we create a new Vector3:
2
Vector3 newPosition;
3
newPosition = new Vector3(theX, theY, theZ);
4
//Set transform.position to the newPosition Vector3 object.
5
transform.position = newPosition;

Aunque esto no es complicado, esto puede hacer que te equivoques más de una vez si no estás atento.


Conclusión

Nada de lo arriba explicado es particularmente avanzado, o muy técnico; son algunos consejos que suelen olvidarse mientras aprendemos a usar Unity. Cualquiera puede averiguar todo esto a cabo con el tiempo, pero puedes desperdiciar un sinnúmero de horas de depuración, busquedas en Google, y pruebas, y no hay necesidad de eso.

He visto todos los video tutoriales en la web de Unity, y si bien es verdad que no me quedé con toda la información la primera vez, mucho de lo anterior simplemente no se menciona o no se hace mucho hincapié en ello. Aprender todo lo que he aprendido me llevó bastante tiempo, y espero que esta lista de consejos acelere la curva de aprendizaje para futuros desarrolladores de Unity.

¿Qué dolores de cabeza has tenido mientras aprender Unity?

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.