Historia y Uso del Motor Unity
Historia y Uso del Motor Unity
TALLER DE INVESTIGACION I
PRESENTA:
JOSUE FAVILA GUTIERREZ
JESUS ELISEO OROZCO GUILLEN
INDICE
INDICE 2
INTRODUCCION 6
ANTECEDENTES 6
PROBLEMATICA 6
JUSTIFICACION 7
LIMITACIONES 7
Objetivo General 7
Objetivos específicos 8
AGRADECIMIENTOS 8
CAPITULO 1: HERRAMIENTAS GRAFICAS PARA DESARROLLAR UN
VIDEOJUEGO 9
¿QUE ES UN MOTOR GRAFICO? 9
TIPOS DE MOTORES GRAFICOS DE LA HISTORIA 9
Doom 9
Build 9
Quake 10
RenderWare 10
Quake II 10
GoldSRC 10
Unreal 11
Quake III 11
Unreal II 11
Source 11
CryEngine 12
Unreal 3 12
Euphoria 12
Dunia 12
CAPITULO 2: UNITY 13
3
¿QUE ES UNITY? 13
HISTORIA DE UNITY 14
CAPITULO 3: INSTALACION DE UNITY 16
DESCARGAR UNITY 16
CONFIGURANDO LAUNCHER 18
CAPITULO 4: ENTORNO DE UNITY 20
CREANDO UN PROYECTO 20
CONOCIENDO EL MOTRO GRAFICO 24
La ventana del Proyecto 25
La Scene View (vista de escena) 26
La ventana de Jerarquía 27
La ventana del Inspector 28
La barra de herramientas 28
ASSETS 29
Objetos Primitivos 29
Cubo 30
Esfera 31
Cápsula 32
Cilindro 33
Plano 34
Quad 35
Importando Assets 35
Algunos tipos comunes de Asset 37
Archivos de Imagen 37
Archivos de modelos 3D 37
Meshes & Animaciones 38
Archivos de Audio 38
Otros tipos de Asset 38
Import Settings (Ajustes de Importación) 39
La ventana Project 40
4
Luces (Lights) 72
Rendering paths 75
Creando y usando scripts 75
Creando Scripts 75
Anatomia de un archivo Script. 76
Controlando un GameObject 77
Variables y el Inspector 78
Controlando GameObjects utilizando Componentes 79
Accediendo Componentes 80
Accediendo Otros Objetos 81
public Transform playerTransform; 82
Encontrando Child Objects (Objetos Hijos) 82
Encontrando Objetos por Name (nombre) o Tag (Etiqueta) 83
CAPITULO 5: EXPORTACION DE PROYECTOS 84
Consideraciones Multi-plataforma 84
Entrada 84
Teclado y joypad 84
Toques y Clics 85
Acelerómetro, brújula, giroscopio y GPS 86
Memoria, almacenamiento y desempeño de CPU 86
Reproducción de películas 86
Requerimientos de almacenamiento 87
Gestión automática de memoria 87
Potencia de la CPU 87
Publicando Construcciones (Publishing Builds) 87
Construyendo reproductores independientes (Building standalone players) 89
Precarga 90
CONCLUSION 91
FUENTES CONSULTADAS 91
6
INTRODUCCION
Los videojuegos son una industria creciente que en los últimos años a tenido un gran auge en la
sociedad, esto debido en gran manera al aumento en el uso de la tecnología, lo cual se ha
convertido en algo más cotidiano. Además, los videojuegos se han visto en la necesidad de
aumentar sus requerimientos mínimos para poder permanecer en el mercado actual, lo cual hace
que se necesiten herramientas más poderosas para su realización.
En vista de lo anterior, los desarrolladores actuales necesitan buscar un software que se facilite el
desarrollo de los videojuegos en gran manera, y una de ellas es de la que vamos a hablar en este
documento: Unity.
Unity es un software especializado en el desarrollo de videojuegos. Este software es capaz de
desarrollar videojuegos que bien pueden ser pesados en cuanto a requisitos, o bastante óptimos
para los equipos y consolas de generaciones pasadas.
Una de sus ventajas es que para usarse en un PC no se necesita que sean tan poderosos, además
de que maneja un entorno gráfico amigable que facilita su uso y comprensión.
ANTECEDENTES
Antes del nacimiento de Unity , existieron diversos motores gráficos para el desarrollo de los
videojuegos, algunos fueron:
Doom, Bullid, Quake, RenderWare, Quake II, GoldSRC, Unreal, Quake III, Unreal II, Source,
CryEngine, Unreal 3, Euphoria, Dunia, entre otros.
PROBLEMATICA
Actualmente vivimos una época dónde buscamos nuevas maneras de entretenimiento, pues a
pesar de contar con un sin fin de diversiones y pasatiempos, algunas veces queremos regresar a
esas actividades que realizamos cuando éramos niños, y si bien ahora no se ve tan aceptable ver a
un grupo de adultos jugar en las calles, tenemos una alternativa que nos une con nuestros amigos
y; gracias a los avances tecnológicos actuales con miles de personas alrededor del mundo: los
videojuegos. Si bien hay gente que los catálogos con un problema, lo cierto es que cuando se
saben llevar son una forma de entretenimiento muy sana, pues nos permite convivir con amigos y
familiares ya sea de forma local o cuando están lejos de nosotros. Y ese es el enfoque que nos
llevó a seleccionar este tema, el ayudar al sano entretenimiento de las personas de cualquier
edad.
JUSTIFICACION
7
Nosotros elegimos el desarrollo de videojuegos en Unity debido a que es una herramienta muy
práctica para el desarrollo de videojuegos, además de que es una de las más usadas en la
actualidad por las grandes industrias desarrolladoras de software. Además, es una herramienta
que conocemos un poco debido a los talleres implementados en el Tecnológico Nacional de
México campus La Piedad.
Otros de los factores que influenciaron en nuestra decisión fue que los videojuegos son un tema
recurrente en nuestra vida, ya sea por alguna conversación o por la afición a jugar. El desarrollo
de videojuegos fue algo que vino después del gusto, y que creo debido a la carrera que estamos
estudiando, lo cual nos facilita entender todo el trasfondo detrás de un videojuego.
LIMITACIONES
Uno de los problemas principales en el desarrollo de videojuegos, es el no contar con el equipo
adecuado para su desarrollo, tanto con todas las herramientas de Software, como una
computadora capaz de correr el desarrollador.
Otro problema es el no contar con la licencia de uso, ya sea para desarrollar, o para exportar a un
dispositivo.
Un problema fuerte es el no verificar los errores que tiene un juego, tanto en los escenarios,
como en los personajes
Objetivo General
Desarrollar en la plataforma Unity un videojuego que este casi listo para su distribución oficial, y
que sea compatible con las principales plataformas de videojuegos actuales.
Objetivos específicos
➢ Mejorar el uso de que tenemos actual de la plataforma Unity
➢ Desarrollar un videojuego
➢ Elaborar la documentación necesaria para tener un producto rentable
8
AGRADECIMIENTOS
Agradecemos a nuestros compañeros por apoyarnos cuando nos hacía falta, y nuestros profesores
por alentar en nosotros el deseo de investigar y nutrir nuestros conocimientos.
Y además a quienes son ser profesores del Tecnológico nos brindan información para despertar
en nosotros los diferentes intereses que hicieron posibles está investigación.
9
Doom
El legendario juego de la empresa Id Software, es considerado un desarrollo basado en un motor
3D, sin embargo no era más que 2D basado en sprites que representaban objetos, personajes y
cualquier otro elemento que tuviese movimiento. Por ese motivo, las habitaciones estaban en el
mismo plano (no se podía ir al sótano ni a la azotea); y debido al uso de sprites 2D emulando
entornos en tres dimensiones, fue un motor rápido capaz de correr en equipos 386 con tarjetas
VGA estándar para la época (1993). Este motor que llevó el mismo nombre que el juego para el
cual se desarrolló, cobró tanto éxito que también se usó para otros títulos, como Heretic, HeXen
y Doom II, entre otros.
Build
Ya para 1994 las exigencias de los usuarios en materia gráfica era mayor que el año anterior. Fue
entonces cuando nació este motor un tanto similar a Doom, pero con ciertas ventajas como la
posibilidad de mirar hacia arriba o abajo, dando una mayor sensación tridimensional. Fue
utilizado inicialmente en juegos como Duke Nukem 3D y Blood; pero debido a su éxito y escaso
consumo de recursos (una 486 y una placa SVGA eran más que suficientes), este motor fue el
alma de una enorme sucesión de títulos.
Quake
Este fue el primer motor tridimensional propiamente dicho de la casa Id Software, compatible
con tarjetas 3Dfx (es decir, permitía aceleración por hardware). Gracias a que las tarjetas gráficas
10
RenderWare
La primera versión fue lanzada en el año 1996 y llegó hasta una cuarta revisión. Este motor no
fue muy conocido entre el público en general como lo fueron otros motores; sin embargo
RenderWare se sigue usando incluso hoy en día en títulos para PC, XBOX 360, Mac OS X, PSP
y Nintendo Wii. Tanto es así que nada más y nada menos que más de 200 juegos se han basado
en este engine 3D (entre ellos: GTA 3, Airpot Tycoon, Evolution GT y Commandos: Strike
Force). Fue el primer motor 3D en permitir a los programadores alterar parámetros en tiempo
real, es decir, no era necesario recompilar el código para introducir modificaciones en el color o
tamaño de un objeto determinado, lo mismo corría para apartados como la física, relacionados a
la gravedad o inercia (efectos muy primitivos por aquel entonces).
Quake II
También llamado Id Tech II, introdujo plena compatibilidad con OpenGL, lo cual garantizaba
que iba a ser soportado por la gran mayoría de placas gráficas nativamente.
Introdujo efectos con luces de color y un nuevo modelo de juego cuyo código fue desarrollado en
C y se cargaba desde librerías DLL en vez del tradicional lenguaje QuakeC, que era propietario.
GoldSRC
Desarrollado en 1998, fue el engine 3D que logró poner a la misma altura las PC con las
consolas de videojuegos, marcando un punto de inflexión en esta constante evolución. Dio vida a
excepcionales juegos como Half-Life y todos sus derivados (Counter Strike, Team Fortress
Classic, Opposing Forces y Blue Shift, entre otros).
Es un motor basado en Quake (aunque con un 70% de código fuente nuevo) con muchas mejoras
adicionales, como la posibilidad de correr mediante Direct3D, OpenGL o software.
Unreal
Del año 1998, se perfilaba como un engine 3D exclusivo para videojuegos FPS (first person
shooter), pero logró consolidarse como algo más que eso: fue el corazón de títulos del género
RPG (role playing game) como Mass Effect. Encarnó al videojuego homónimo y su versión
multijugador llamada Unreal Tournament.
Además de tener su propio lenguaje de scripts (UnrealScript), Epic ofreció un editor de mapas y
de modificaciones del programa llamado UnrealEd. Las posibilidades de renderizado pasaban
tanto por software como por hardware. El motor ofrecía detección de colisiones, iluminación de
11
Quake III
También llamado Id Tech III, hizo un uso extensivo de sombras y shaders así como también
superficies curvas y la posibilidad de usar millones de colores para las texturas, incluyendo
transparencias. Todos los efectos anteriores requerían una tarjeta 3D compatible con OpenGL y
una PC de 300 MHz como mínimo. Los títulos más destacados que aprovecharon este motor,
fueron Quake III Arena, Call of Duty, Return to Castle Wolfenstein.
Unreal II
Concebido en 2002, apadrinó juegos como Lineage II, Ghost Recon 2, Postal 2, Splinter Cell,
Rainbow Six 3, Unreal II (también Tournament 2003 y 2004).
Se trató de una versión mejorada del motor original sumando soporte de física y 64 bits.
También agregó efectos especiales como líquidos en movimiento, siendo capaz de operar diez
veces más polígonos que su versión anterior.
Source
Considerado por muchos como uno de los mejores motores 3D, logró una muy buena calidad
(con un muy buen nivel de realismo, tanto en gráficos como en física) con un consumo
moderado de recursos. En su época de lanzamiento (año 2003), no era necesario contar con
computadoras o tarjetas gráficas excesivamente costosas.
Dio lugar a títulos como Half Life 2, Counter Strike: Source, Postal III y Portal, entre otros.
Hacía uso de avanzadas tecnologías de iluminación, shaders y sombras dinámicas, con
superficies líquidas de alto realismo; como así también del soporte multiprocesador.
CryEngine
Crytek desarrolló este engine para una demo 3D en tarjetas GeForce 3 (llamada X-Isle) y a causa
del interés del público, se terminó gestando el famoso juego Far Cry, para luego convertirse en el
motor de varias consolas de juegos.
Ofrecía grandes detalles visuales, pudiendo generar modelos de agua muy realista, vegetación
muy abundante y ambientes de tamaño casi ilimitado.
Unreal 3
La tercera versión del motor Unreal tiene soporte para DirectX 9, 10 y 11 (además de XBOX
360, PS3 y Mac OS X); incorporando procesamiento multithreading, soporte para nVidia PhysX
(para procesar física por hardware), efectos mejorados de partículas, HDR de 64 bits de color y
un largo etcétera.
12
Los títulos más destacados de este motor son Unreal Tournament 3, Mass Effect 1 y 2 y Rainbow
Six: Vegas.
Euphoria
Vio la luz gracias al mítico Grand Theft Auto IV. Se trata de un engine 3D que puede generar
animaciones en tiempo real a pedido, gracias a la combinación de inteligencia artificial, física y
biomecánica, dando como resultado una simulación muy natural del personaje, animal o cuerpo
humano.
Esta inteligencia adaptativa permite controlar los movimientos de los personajes, lo cual suma
realismo a las animaciones y da un toque de distinción a cada sujeto.
Dunia
Este motor utilizado en Far Cry 2, conserva sólo el 3% de código que CryEngine, y es mucho
más eficiente en el consumo de recursos que CryEngine 2 (utilizado en el juego Crysis). Dunia
aprovecha las bondades de procesadores multicore y puede generar escenarios destructibles, IA
dinámica y posibilidad de usar mapas de gran tamaño.
13
CAPITULO 2: UNITY
¿QUE ES UNITY?
Es un motor gráfico 3D para PC y Mac que viene empaquetado como una herramienta para crear
juegos, aplicaciones interactivas, visualizaciones y animaciones en 3D y tiempo real. Unity
puede publicar contenido para múltiples plataformas como PC, Mac, Flash(Hasta la version 4),
XBox, PS2/3/4, Android, PSVita y iPhone. El motor también puede publicar juegos basados en
web usando el plugin Unity web player.
herramientas visuales, pintar o texturizar, cubrir de hierba o colocar arboles y otros elementos de
terreno importados desde aplicaciones 3D como Blender, 3DS Max o Maya.
Unity hace el proceso de producción de juego simple dándole un set de pasos lógicos para
construir cualquier panorama concebible de juego. Establece el uso del concepto Game Object
(GO), donde se puede estudiar los componentes del juego en objetos dóciles, que está hecho de
muchos componentes individuales.
Haciendo objetos individuales dentro del juego e iniciando funcionabilidad en ellos con cada
componente que se sume, se puede expandir el juego en una manera progresiva lógica. Los
componentes a su vez tienen variables, esencialmente por los cuales serán controlados.
HISTORIA DE UNITY
La primera versión de Unity se lanzó en la Conferencia Mundial de Desarrolladores de Apple en
2005. Fue construido exclusivamente para funcionar y generar proyectos en los equipos de la
plataforma Mac y obtuvo el éxito suficiente como para continuar con el desarrollo del motor y
herramientas. Unity 3 fue lanzado en septiembre de 2010 y se centró en empezar a introducir
más herramientas que los estudios de alta gama por lo general tienen a su disposición, con el fin
de captar el interés de los desarrolladores más grandes, mientras que proporciona herramientas
para equipos independientes y más pequeñas que normalmente serían difíciles de conseguir en
un paquete asequible. La última versión de Unity, Unity 5, lanzada a principios de 2015, se
anunció en Game Developers e incluye añadidos como Mecanim animation, soporte para
DirectX 11 y soporte para juegos en Linux y arreglo de bugs y texturas. Desarrollado por
creadores de juegos para mayor expectativa.
15
DESCARGAR UNITY
Lo primero que tenemos que hacer es buscar en nuestro navegador Unity y seleccionaremos el
enlace que nos permite descargar Unity
16
Una vez que estemos en la pagina de descarga de Unity, lo siguiente es seleccionar la opción que
dice descargar Unity Hub, que es una herramienta que nos va a ayudar a descargar la versión más
reciente y más adecuada a nuestro equipo
Cuando presionemos el botón resaltado en la imagen anterior, comenzará la descarga del Hub de
Unity. La descarga no tardara mucho, en nuestro navegador
debería de aparecer un icono similar a la siguiente imagen
Lo
CONFIGURANDO LAUNCHER
Nos pedirá que activemos la licencia, lo cual
tendremos que hacer de forma manual ,
seleccionaremos save license request y
seleccionaremos la ruta donde la
guardaremos, la cargaremos, luego dentro
del Hub iremos a la
pestaña de Installs y ya
La Pantalla de Inicio se muestra al comenzar, haga clic en ‘Nuevo proyecto’ para empezar
Creando un Proyecto
Cada vez que inicie el editor de Unity. la Pantalla de Inicio se mostrará. Desde ahí, puede
seleccionar NEW en la esquina superior derecha para cambiar a la vista Crear Proyecto.
20
En la esquina superior derecha de la Pantalla de Inicio, seleccione ‘Nuevo’ para abrir la vista
Crear Proyecto
Para mostrar la vista Crear Proyecto de la Pantalla de Inicio cuando ya esté en el editor de Unity,
seleccione New Project… desde el menú File.
Archivo>Nuevo Proyecto - Muestra la vista Crear Proyecto de la Pantalla de Inicio dentro del
editor de Unity
Desde la vista Crear Proyecto de la Pantalla de Inicio, puede nombrar, establecer opciones, y
especificar la localización de su nuevo proyecto.
21
opciones de paquetes de Assets - puede elegir añadirlas ahora o ignorar esta opción y añadirlas
más adelante
Abriendo un Proyecto
Cuando usted inicie el editor de Unity, se muestra y abre la vista del Project de la pantalla de
inicio. De aquí usted puede escoger el proyecto que usted desea abrir. Para mostrar la vista de
Abrir Proyecto de la Pantalla de Inicio cuando ya está en el editor de Unity, seleccione Open
Project desde el menú File.
Archivo>Abrir Proyecto - Muestra la vista de Abrir Proyecto de la Pantalla de Inicio dentro del
editor de Unity
La vista Abrir Proyecto de la Pantalla de Inicio muestra todos los proyectos de los que tiene
constancia el editor de Unity. (Si el editor está recién instalado y no conoce la localización de sus
proyectos existentes, le indicará que cree un nuevo proyecto.
23
La vista Abrir Proyecto de la Pantalla de Inicio - Seleccione ‘Abrir’ para localizar y abrir un
proyecto existente que no se esté mostrando
Haga clic en cualquiera de los proyectos que se muestran en la lista para abrirlo. Si su proyecto
no está listado, necesitará indicarle al editor dónde está.
Para ubicar y abrir un proyecto existente que no está listado:
1. Seleccione Open. Esto mostrará el Finder de su ordenador (Mac OS X) o el Explorador de
Archivos (Windows).
7. En el Finder o en el Explorador de Archivos, seleccione la carpeta de proyecto que quiera
abrir y seleccione “Abrir”.
(NOTA: Para abrir un proyecto de Unity, no hay un archivo específico de proyecto de Unity que
seleccionar. Un proyecto de Unity es una colección de archivos, así que hay que indicarle al
editor de Unity que abra una carpeta, en vez de un archivo específico.)
The Project Window (ventana del proyecto) muestra sus assets de librería que están disponibles
para ser usados. Cuando usted importe sus assets a su proyecto, estos aparecen aquí.
La Scene View (vista de escena)
La Scene View le permite a usted una navegación visual y editar su escena. La scene view puede
mostrar una perspectiva 2D o 3D dependiendo en el tipo de proyecto en el que esté trabajando.
26
La ventana de Jerarquía
27
La ventana del inspector le permite a usted visualizar y editar todas las propiedades del objeto
actualmente seleccionado. Ya que diferentes objetos tienen diferentes propiedades, el layout
(diseño) y contenido de la ventana del inspector va a variar.
La barra de herramientas
La barra de herramientas proporciona un acceso a las características más esenciales para trabajar.
En la izquierda contiene las herramientas básicas para manipular la scene view y los objetos
dentro de esta. En el centro están los controles de reproducción, pausa, y pasos. Los botones a la
derecha le dan acceso a sus servicios de Unity Cloud y su cuenta de Unity, seguido por un menú
de visibilidad de capas, y finalmente el menú del layout del editor (que proporciona algunos
diseños alternativos para la ventana del editor, y le permite a usted guardar sus propios layouts
personalizados).
La barra de herramienta no es una ventana, y solamente es parte de la interfaz de Unity que usted
no puede re-ajustar.
28
ASSETS
Un asset es una representación de cualquier item que puede ser utilizado en su juego o proyecto.
Un asset podría venir de un archivo creado afuera de Unity, tal como un modelo 3D, un archivo
de audio, una imagen, o cualquiera de los otros tipos de archivos que Unity soporta. También
hay otros tipos de asset que pueden ser creados dentro de Unity, tal como un Animator
Controller, un Audio Mixer o una Render Texture.
Objetos Primitivos
Unity puede trabajar con modelos 3D de cualquier forma que puedan ser creados con un
software de modelado. Sin embargo, hay un número de tipos de objetos primitivos que pueden
ser creados directamente dentro de Unity, principalmente Cube, Sphere, Capsule, Cylinder, Plane
and Quad. Estos objetos son útiles de vez en cuando en su propio derecho (un plano es utilizado
comúnmente como una superficie de suelo plana, por ejemplo) pero estos también ofrecen una
manera rápida de crear marcadores de posición y prototipos para propósitos de pruebas.
Cualquiera de las primitivas pueden agregarse a la escena utilizando el item apropiado en el
menú GameObject > 3D Object.
29
Cubo
Este es un cubo simple con lados de una unidad de largo, texturizado para que la imagen se
repita en cada una de las seis caras. Como es, un cubo no es un objeto muy com ún en la mayoría
de los juegos pero una vez es escalado, es muy útil para paredes, postes, cajas, pasos, y otros
items similares. También es un objeto que sirve como marcador de posición para programadores
para utilizar durante el desarrollo cuando un modelo finalizado todavía no está disponible. Por
ejemplo, el cuerpo de carro puede ser burdamente modelado utilizando una caja alargada con las
dimensiones correctas. Aunque esto no es útil para el juego terminado, es bueno como una
representación simple del objeto para probar el código de control del carro. Ya que los bordes de
un cubo son de una sola unidad de grandes, usted puede revisar las proporciones de un mesh
importado a la escena agregando un cubo cerca de este y comprando tamaños.
30
Esfera
Esta es una esfera de un diámetro de una unidad (ie, un radio de 0.5 unidad - media unidad),
texturizada para que la imagen entera se envuelva alrededor una vez con la parte de arriba y
abajo “pellizcado-aplastado” en los polos. Las esferas son obviamente muy útiles para
representar pelotas, planetas y proyectiles pero una esfera semi-transparente puede también hacer
un bonito dispositivo GUI para representar el radio de un efecto.
Cápsula
31
Una cápsula es un cilíndrico con unas tapas hemisféricas al final. El objeto es una unidad en
diámetro y dos unidades de alto (El cuerpo es una unidad y dos tapas son media unidad cada
una). Es texturizada para que la imagen se envuelva exactamente una vez, pellizcada-apretada en
el ápice de cada hemisferio. En particular, la física de un objeto redondo es a veces mejor que
aquellos de una caja para ciertas tareas.
Cilindro
Este es un cilindro simple que es dos unidades de alto y una unidad de diámetro, texturizado para
que la imagen se envuelva una vez alrededor de la forma del tubo del cuerpo pero también
aparece separadamente en dos planos, con terminaciones circulares. Los cilindros son muy útiles
para crear postes, varillas y llantas pero usted debería tener en cuenta que la forma del collider es
de verdad una cápsula (no hay un collider cilindro primitivo en Unity). Usted debería crear un
mesh de la forma apropiada en el programa de modelado y adjuntar un mesh collider si usted
necesita un collider cilíndrico preciso para propósitos de física.
32
Plano
Este es un cuadrado plano con bordes con diez unidades de largo orientado en el plano XZ del
espacio de coordenada local. Es texturizado para que la imagen completa aparezca exactamente
una vez dentro del cuadrado. Un plano es útil para la mayoría de tipos de superficies planas,
como lo son los pisos y las paredes. Un superficie también se necesita a veces para mostrar
imagenes o películas en GUI y efectos especiales. Aunque un plano puede ser utilizado para
cosas como esto, la primitiva simple quad es a veces un ajuste más natural para la tarea.
33
Quad
La primitiva quad se asemeja al plano pero sus bordes solo son una unidad de largos y la
superficie es orientada en el plano XY del espacio de coordenadas local. También, un quad es
dividido en dos triángulos dónde el plano contiene dos-cientos. Un quad es útil en casos dónde
un objeto de escena debe ser utilizado simplemente como una pantalla de visualización para la
imagen o película. Un GUI simple y una visualización de información puede ser implementada
utilizando quads, al igual que partículas, sprites e imágenes “impostoras” que sustituyen por
objetos sólidos vistos en la distancia.
Importando Assets
Los Assets creados afuera de Unity deben ser traídos a Unity al tener el archivo ya sea guardado
directamente a la carpeta “Assets” de su proyecto, o copiado a esa carpeta. Para muchos
formatos comunes, usted puede guardar su archivo fuente directamente a la carpeta Assets de su
proyecto y Unity será capaz de leerlo. Unity va a notar cuando usted ha guardado nuevos
cambios al archivo y va a re-importarlo si es necesario.
Cuando usted cree un proyecto de Unity, usted está creando una carpeta - llamada por su
proyecto - que contiene las siguientes sub-carpetas:
La carpeta Assets es dónde usted debería guardar o copiar los archivos que usted quiere utilizar
en su proyecto.
Los contenidos de la Project Window en Unity muestra los items en su carpeta de Assets. Por lo
que si usted guarda o copia un archivo a su carpeta de Assets, este será importado y será visible
en su Project Window.
Unity detectará archivos automáticamente a medida que son agregados a la carpeta Assets, o si
son modificados. Cuando coloque cualquier asset en la carpeta Assets, verás al asset aparecer en
su Project View.
asset y carpeta, pero esto están ocultos por defecto, por lo que nos podría ver en su
Finder/Explorer tampoco.
Estos contienen información importante acerca de cómo el asset es utilizado en el proyecto y
estos deben quedarse con el archivo asset con el cual se relacionan, por lo que si usted mueve o
re-nombra un archivo asset en el Explorer/Finder, usted también debe mover/re-nombrar el
archivo meta para que coincida.
La manera más simple de mover o re-nombrar sus assets es siempre hacerlo dentro de la carpeta
de proyecto de Unity. De esta manera, Unity va a automáticamente mover o re-nombrar el
archivo meta correspondiente.
Si usted quiere traer colecciones de assets a su proyecto, usted puede utilizar los Asset Packages.
Ver Asset Packages para más detalles.
Archivos de modelos 3D
Si usted guarda sus archivos 3D de la mayoría del software de paquetes 3D en su formato nativo
(ej, .max, .blend, .mb, .ma) a su carpeta de Assets, estos serán importados al llamar de vuelta a su
plugin(*) de exportación de paquetes 3D FBX. De manera alternativa usted puede exporta como
FBX de su app 3D a su proyecto de Unity. Lea más acerca de importar archivos 3D de su app
3D.
Archivos de Audio
Si usted tiene archivos de audio sin comprimir a su carpeta de Assets, estos serán importados de
acuerdo a los ajustes de compresión especificados.
archivo fuente en la carpeta Asset, esto va a causar que Unity re-importe el asset nuevamente
para reflejar los nuevos cambios.
Por ejemplo los import settings para una imagen le va a permitirle a usted escoger si es
importada como una textura, un 2D sprite, o un normal map. Los import settings de un archivo
FBX le permite a usted ajustar la escala, generar normales, o coordenadas de lightmap, y separar
y cortar clips de animación definidos en el archivo.
37
Haciendo click en un asset de imagen en la ventana del Proyecto muestra los import settings para
ese asset en el Inspector
Para otros tipos de asset, los import settings se verán diferente. Los diferentes tipos de ajustes
que usted verá se relacionan al tipo de asset seleccionado. Aquí hay un ejemplo de un asset de
Audio, con sus import settings (ajustes de importación) mostradas en el inspector.
Un asset de audio seleccionado en la ventana del Proyecto muestra los import settings del audio
para ese asset en el Inspector.
Si usted está desarrollando un proyecto multo-plataforma, usted puede anular los ajustes
“default” (predeterminados) y asignar unos import settings diferentes en una base por
plataforma.
La ventana Project
38
En esta vista, puede acceder y gestionar los assets que pertenezcan a su proyecto.
El panel izquierdo del navegador muestra la estructura de carpetas del proyecto como una lista
de jerarquía. Cuando una carpeta es seleccionada de una lista haciendo click, su contenido va a
ser mostrado en el panel a la derecha. Usted puede hacer click en el triángulo pequeño para
expandir o colapsar la carpeta, mostrando cualquier carpetas anidadas que contenga. Mantenga
presionado Alt mientras usted hace click para expandir o colapsar cualquier carpetas anidas
recursivamente.
Los assets individuales son mostrados en el panel de la mano derecha como iconos que indican
su tipo( script, material, sub-carpeta, etc). Los iconos pueden ser redimensionados usando el
deslizador que está en la parte inferior del planel; serán remplazados por una vista de una lista de
jerarquía si el deslizador es movido hacia el extremo izquierdo. El espacio a la izquierda del
deslizador muestra el elemento actualmente seleccionado, incluyendo una ruta completa al
elemento si se está realizando una búsqueda.
Encima de la lista de la estructura del proyecto hay una sección de Favorites en donde se puede
colocar elementos que frecuentemente se usen para tener un acceso fácil a estos. Puede arrastrar
39
elementos de la lista de la estructura del proyecto a los Favoritos y también guardar las consultas
de búsqueda ahí. (mirar Buscando abajo).
Justo encima del panel está una “ ruta de navegación” que muestra la ruta a la carpeta que
actualmente se esté viendo. Los elementos separados de la ruta pueden ser oprimidos(haciendo
click) para una navegación fácil alrededor de la jerarquía de la carpeta. Cuando se busque, esta
barra cambia para mostrar el área que se está buscando( la Carpeta raíz de Assets, la Carpeta
Seleccionada o el Asset Store) junto con una cuenta de assets gratuitos y pagos disponibles en la
tienda, separados por una barra. Hay una opción en sección General de la ventana de
preferencias de Unity para desactivar la visualización de la cuenta de hits del Asset Store si no
son requeridos.
El ‘breadcrumb trail’ (camino con rastros) muestra la ruta a la carpeta que actualmente está
viendo.
Junto a la esquina superior de la ventana del navegador se encuentra la barra de herramientas.
En la esquina superior derecha, seleccione el menú desplegable para cambiar el diseño (layout)
de la vista, y oprima el icono lock para congelar la vista
Buscando
El navegador dispone de una función de búsqueda muy potente que especialmente es útil en el
momento de ubicar assets en grandes o proyectos desconocidos. La búsqueda básica va a filtrar
assets de acuerdo al tipo de texto en el cuadro de búsqueda.
40
Continuando a la derecha, el siguiente botón filtra assets de acuerdo a su etiqueta( Label) ( las
etiquetas de un asset se pueden establecer en Inspector). Dado que el número de etiquetas puede
ser potencialmente muy grande, el menú de etiquetas tiene su propia caja de filtro mini-
búsqueda.
41
Tenga en cuenta que los filtros funciona mediante la adición de un término extra en el texto de
búsqueda. Un término que empiece con “t:” filtra por el tipo específico del asset, mientras “l:”
filtra por etiqueta(label). Puede escribir estos términos directamente en el cuadro de búsqueda en
vez de usar el menú si se sabe lo que se está buscando por. Puede buscar más de un tipo de
etiqueta(label) a la vez. Agregando varios tipos va a expandir la búsqueda para incluir todos los
tipos específicos. Agregando múltiples etiquetas(labels) limitara la búsqueda a elementos que
tengan todas las etiquetas específicas.
Si selecciono un elemento de la lista, sus detalles van a ser mostrados en el inspector junto las
opciones para comprar y/o descargarlo. Algunos tipos de asset tienen pre-visualizaciones
disponibles en esta sección entonces usted puede, por ejemplo, girar un modelo de 3D antes de
comprarlo. El inspector también brinda la opción de ver el asset en la ventana habitual del Asset
Store para ver detalles adicionales.
Moverse, orbitar y acercarse son operaciones claves en la navegación del scene view, entonces
Unity ofrece varias alternativas para realizarlas para una conveniencia máxima
Usando el Hand Tool
Cuando el Hand Tool es seleccionado (Acceso Rápido: Q), los siguientes controles del mouse
están disponibles:
click para
arrastrar.
Zoom Dejar oprimido Dejar Dejar oprimido Alt-
Alt y haga click oprimido Control y haga click y
derecho y Alt y haga arrastre, o desplace
arrastre, o use la click con dos dedos(Track-
rueda de derecho y Pad).
desplazamiento. arrastre.
Usted puede hacer click en cualquiera de los brazos de los ejes conicos para snap la Camara de la
Scene View al eje que representa (eg vista de encima, vista lateral izquierdo, vista frontal, etc.)
Usted tambien puede toggle la proyeccion de la scene view entre los modos perspective y
orthographic (ortografico) (a veces llamado ‘isometric’) al hacer click en el cubo en el centro del
Scene Gizmo, o el texo debajo de este. La vista orthographic no tiene perspectiva, y es util
combinarlo con uno de los brazos de los ejes conicos para obtener una elevacion frontal o lateral,
o una vista plana.
45
Posicionando GameObjects
Cuando construya sus juegos, usted va a poner muchos objetos diferentes en el mundo de su
juego.
Transladar(Translate), Rotar(Rotate), y Escalar(Scale)
46
Use las herramientas del Transform en la Barra de Herramientas para Translate (trasladar),
Rotate (girar), y Scale (escalar) GameObjects individuales. Cada uno tiene un Gizmo
correspondiente que aparece alrededor del GameObject seleccionado en el Scene View. Usted
puede utilizar el mouse y manipular el eje de cualquier Gizmo para cambiar el componente
Transform del GameObject, o puede escribir valores directamente a los campos numéricos del
componente Transform en el Inspector. Cada uno de los tres modos de transform puede ser
seleccionados con las teclas de acceso rápido - W para trasladar, E para rotar y R para escalar y T
para RectTransform. (El RectTransform es utilizado para posicionar elementos UI en vez de
posicionar GameObjects estándar - ver la sección UI del manual para más detalles.)
En el centro del gizmo Translate (trasladar), hay tres pequeños cuadrados que pueden ser
utilizados para arrastrar el objeto dentro de un solo plano (i.e. los dos ejes pueden moverse a la
vez mientras que el tercero se mantiene quieto). Si usted tiene un mouse de tres botones, usted
puede hacer click en el botón del medio y arrastrar para ajustar los ejes que fueron movidos
recientemente (la flecha para este eje va a cambiar a amarilla). Si usted mantiene shift presionado
mientras hace click y arrastra en el centro del Gizmo de Translate, el centro del gizmo cambia a
ser un cuadrado plano, indicando que usted puede mover el objeto alrededor del plano relativo a
la manera en que la cámara de la Scene View está mirando.
Con la herramienta de rotación seleccionada, usted puede cambiar la rotación del objeto
haciendo click y arrastrando los ejes del gizmo de la esfera metálica que aparece alrededor de él.
Al igual que con la herramienta de traslación, el último eje que fue cambiado será coloreado
amarillo y puede ajustarse más haciendo click en el botón del medio del mouse y arrastrando.
Piense en los círculos rojos, verdes y azules como hacer una rotación alrededor de los ejes rojo,
verdes y azules que aparecen en el modo de traslación. (Rojo es el eje-x, verde es el eje-y, y azul
es el eje-z.) Finalmente, el círculo más externo puede ser utilizado para girar el objeto alrededor
del eje-z de la scene view. Usted puede pensar de esto como girar alrededor del espacio de
pantalla.
La herramienta de escala le permite reescalar el objeto igualmente en todos sus ejes a la vez
haciendo click y arrastrando el cubo en el centro del gizmo. También puede escalar los ejes
individualmente, pero, debería tener cuidado cuando haga esto si hay objetos hijo ya que el
efecto puede ser raro. Nuevamente, el último eje cambiado aparecerá en amarillo y puede ser
ajustado arrastrándolo con con el botón del medio del mouse.
47
Tenga en cuenta que en modo 2D, el eje Z no puede ser cambiado en la escena usando los
gizmos. No obstante, es útil para ciertas técnicas de scripting usar el eje Z para otros motivos;
usted todavía puede establecer el eje Z del Inspector en aquellos casos.
Para más información en cambiando(transforming) GameObjects, por favor mirar la página del
Transform Component.
Palanca de Visualización de Gizmo(Gizmo Display Toggles)
Los Gizmo Display Toggles son usados para definir la ubicación de cualquier Transform Gizmo.
Look-At Rotation
Mientras use la herramienta de rotación(Rotate Tool), usted puede mantener oprimido Shift y
Control (Command en Mac) para rotar el objeto hacia un punto en la superficie de cualquier
Collider. Esto hace que la orientación de los objetos respecto a los otros sea simple.
Vertex Snapping
Puede ensamblar sus mundos más fácilmente con una función llamada Vertex Snapping. Esta
función es una herramienta muy simple pero poderosa en Unity. Le permite coger cualquier
48
vértice de un mesh dado y con su mouse colocar el vértice en la misma posición de cualquier
mesh que escoja.
Con esto, usted puede ensamblar sus mundos muy rápido. Por ejemplo, puede alinear tramos de
carretera precisamente en un juego de carreras, o posicionar artículos power up en los vértices de
un mesh.
Usar Vertex Snapping en Unity es sencillo. Simplemente siga estos paso:
• Seleccione el mesh que quiera manipular y asegúrese que la Transform Tool esté activa.
• Oprima y sostenga la tecla V para activar el vertex snapping mode.
• Mueva su cursor encima del vértice de su mesh que quiera usar como punto de pivote.
• Sostenga oprimido el botón izquierdo una vez su cursor esté encima del vértice deseado y
arrastre su mesh junto a cualquier otro vértice en otro mesh.
• Suelte el botón del mouse y la tecla V cuando esté feliz con los resultados.
• Shift-V actúa como una palanca de esta funcionalidad.
• Usted puede snap vertex al vértice, el vértice a la superficie y el punto de pivote al
vértice.
Use los botones en la Barra de Herramientas para controlar el Editor Play Mode y ver cómo se
jugará el juego publicado. Mientras en Play mode, cualquier cambio que haga será temporal, y se
va reset cuando se salga de Play mode. El UI del Editor se va a escurecer para avisarle de esto.
Barra de Control del Game View
Botón: Función:
Display Oprima esto para escoger de una lista de cámaras si
tiene varias cámaras en la escena. usted puede
asignar Displays a las cámaras en el módulo Camera,
debajo del desplegable Target Display. Este es
configurado a “Display 1” por defecto.
50
El ajuste Gizmo le permite a uno desactivar selectivamente el dibujo de Gizmo para unos
componentes específicos.
El ajuste 3D Gizmos encima del menú se refiere a los iconos Gizmo. Con el ajuste activado, los
iconos mostrarán la perspectiva de la cámara (ie, iconos para objetos más cerca van a estar más
grande de aquellos objetos distantes), de lo contrario, serán el mismo tamaño,
independientemente de la distancia. El deslizador alado de casilla de verificación, le permitirá
variar el tamaño de los iconos, lo que puede ser útil para reducir el desorden cuando hayan
muchos gizmos visibles.
52
Creación de Juego
Unity le da poder a los diseñadores de juego en hacer juegos. Lo que es realmente especial de
Unity es que no se necesita años de experiencia programando o un titulo universitario en arte
para hacer juegos divertidos. Hay un conjunto de conceptos de trabajo que se necesitan para
aprender a utilizar Unity. Una vez se entiendan estos, uno va a poder encontrarse a sí mismo
haciendo juegos en un instante. Con el tiempo que se va ahorrar poniendo sus juegos en
funcionamiento, va a poder usar mucho más tiempo para refinar, balancear, y ajustar su juego a
la perfección.
Escena
Las escenas contienen los objetos de su juego. Pueden ser usadas para crear un menú principal,
niveles individuales, y cualquier otra cosa. Piense en cada archivo de escena, como un nivel
único. En cada escena, usted va a colocar su ambiente, obstáculos, y decoraciones, el diseño
esencial y la construcción de su juego en pedazos.
Una nueva escena vacía, con los objetos 3D predeterminados - una cámara y una directional
light.
53
Cuando usted cree un nuevo proyecto de Unity, su scene view le va a mostrar una nueva escena.
Esta es una escena untitled (sin titulo) y unsaved ( sin guardar). La escena estará vacía al menos
por objetos predeterminados - ya sea una cámara ortográfica, o una cámara perspectiva y una
directional light, dependiendo si comenzó el proyecto en modo 2D o 3D.
Guardando Escenas
Para guardar la escena en la cual usted está actualmente trabajando, escoja File > Save Scene
desde el menú, o presione Ctrl/Cmd + S.
La escenas son guardadas como assets , a la carpeta de Assets de su proyecto. Por lo tanto
aparecen en la ventana del Proyecto, como cualquier otro asset.
GameObjects
El GameObject es el tipo de objeto más importante en Unity. Es bien importante entender qué es
un GameObject, y cómo puede ser usado.
¿Qué son los GameObjects?
54
Cada objeto en su juego es un GameObject. No obstante, los GameObjects no hacen nada por sí
mismos. Estos necesitan propiedades especiales antes de que puedan volverse un personaje, un
ambiente, o un efecto especial. Pero cada uno de estos objetos hacen diferentes cosas. Si cada
objeto fuera un GameObject, cómo hacemos nosotros para diferenciar un power-up interactivo
de un cuarto estático? Qué hace que estos GameObjects sean diferentes del uno al otro?
Cuatro diferentes Game Objects, un personaje animado, una luz, un árbol y una fuente de audio
La respuesta a esta pregunta es que los GameObjects son contenedores. Estos pueden guardar las
diferentes piezas que son requeridas para hacer un personaje, una luz, un árbol, un sonido, o lo
que sea que usted quisiera construir. Entonces para de verdad entender GameObjects, usted
necesita entender estas piezas que son llamadas Components.
Dependiendo del objeto que se quiera crear, usted va agregar diferentes combinaciones de
Components al GameObject. Piense en un GameObject como una olla vacía de cocina, y los
Components como los ingredientes diferentes que hacen su receta del gameplay. Unity tiene
varios tipos de componentes integrados, y usted también puede hacer sus propios componentes
utilizando Scripts.
GameObject
Los GameObjects son objetos fundamentales en Unity que representan personajes, props, y el
escenario. Estos no logran nada por sí mismos pero funcionan como contenedoras para
Components, que implementan la verdadera funcionalidad. Por ejemplo, un objeto Light es
creado al adjuntar un componente Light a un GameObject.
For example, a Light object is created by attaching a Light component to a GameObject.
El Transform Component
Es imposible crear un GameObject en Unity sin un Transform Component. El Transform
Component es uno de los más importantes Components, ya que todas las propiedades Transform
del GameObject están habilitadas por sus usos en este Component. Define la posición, rotación,
y escala del GameObject en el mundo/Scene View del juego. Si un GameObject no tuviera un
Transform Component, sería nada más que alguna información en la memoria del computador.
Efectivamente no existiría en el mundo.
El Transform Component también habilita un concepto llamado Parenting, que es utilizado a
través del Unity Editor y es una parte critica de trabajar con GameObjects. Para aprender más
sobre el Transform Component y Parenting, lea Transform Component Reference page.
Otros Components
El Transform Component es critico para todos los GameObjects, entonces cada GameObject
tiene uno. Pero, los GameObjects pueden tener otros Components también.
56
Usando Components
Los Components son las tuercas y tornillos de los objetos y comportamientos de un juego. Son
las piezas funcionales de cada GameObject. Si todavía no entiende la relación entre Components
y GameObjects, lea la página de GameObjects antes de seguir adelante.
Un GameObject es un contenedor para muchos Components distintos. Por defecto, todos los
GameObjects automáticamente tienen un Transform Component. Esto es porqué el Transform
dicta dónde el GameObject está ubicado, y cómo es girado y escalado. Sin un Transform
Component, el GameObject no tendría lugar en el mundo. Intente crear un GameObject vacío
ahora como ejemplo. Haga click en el elemento del menú GameObject->Create Empty.
Seleccione el new GameObject, y mire el Inspector.
Agregando Components
Usted puede agregar Components al GameObject seleccionado a través del menú de
Components. Nosotros vamos a intentar esto añadiendo un Rigidbody a un GameObject vacío
que creamos. Selecciónelo y escoja Component->Physics->Rigidbody del menú. Cuando lo
haga, va a ver las propiedades del Rigidbody aparecer en el Inspector. Si oprime Play mientras
que el GameObject vacío esté seleccionado, podrá tener una pequeña sorpresa. Inténtelo y note
cómo el Rigidbody le ha agregado funcionalidad al GameObject que estaba vacío. (La posición
Y del GameObject comienza a disminuir. Esto es porqué el motor de física de Unity está
causando que el GameObject se caiga gracias a la gravedad.)
El Component Browser
El navegador le permite navegar los components convenientemente por categoría y también tiene
un cuadro de búsqueda que puede utilizar para ubicar components por su nombre.
Puede adjuntar cualquier número o combinación de Components a un solo GameObject. Algunos
Components trabajan mejor en combinación con otros. Por ejemplo, el Rigidbody trabaja con
cualquier Collider. El Rigidbody controla el Transform a través del motor de física NVIDIA
PhysX, y el Collider permite que el Rigidbody se choque e interactúe con otros Colliders.
Si quiere saber más acerca del uso de un component en particular, puede leer sobre cualquiera de
ellos en la página relevante de referencia del Component. También puede acceder la página de
referencia de un Component en Unity haciendo click en el pequeño ? en el encabezado del
Component en el Inspector.
58
Editando Components
Uno de los grandes aspectos de los Components son la flexibilidad. Cuando se adjunta un
Component a un GameObject, hay diferentes valores o Properties en el Component que pueden
ser ajustadas en el editor mientras se construye un juego, o por scripts cuando esté corriendo el
juego. Hay dos tipos de propiedades ( Properties): Values y References.
Mire la imagen de abajo. Es un GameObject vacío con un componente Audio Source. Todos los
valores del Audio Source en el Inspector son valores por defecto.
59
60
Este componente contiene una sola propiedad de Reference (referencia), y siete propiedades de
valor. Un Audio Clip es la propiedad de referencia. Cuando esta Audio Source empieza a
reproducirse, intentará reproducir el archivo audio que está referenciado en la propiedad Audio
Clip. Si ninguna referencia se hace, un error va a ocurrir ya que no hay audio para reproducir.
Usted debe referenciar el archivo dentro del Inspector. Esto es fácil como arrastrar un archivo de
audio del Project View a la propiedad Reference o utilizando el Object Selector (selector de
objetos).
61
62
Eliminar(Remove)
Un comando Remove Component está disponible para casos en dónde ya no se necesite el
component adjunto al GameObject. Observe que hay algunas combinaciones de components que
dependen de cada uno (eg, Hinge Joint solo funciona cuando un Rigidbody también esté
adjunto); verá un mensaje de advertencia si trata de eliminar components que otros dependan.
Moverse Arriba/Abajo
Los Image Effects components cada uno aplica a un efecto visual a la vista renderizada, pero el
orden en el que los efectos son aplicados es importante. El menú de contexto tiene Move Up and
Move Down.
Copiar/Pegar
El comando Copy Component almacena el tipo y los ajustes actuales de la propiedad de un
Component. Estos luego pueden ser pegados a otro component del mismo tipo con Paste
Component Values. También, puede crear un nuevo component con los valores copiados en un
objeto usando Paste Component As New.
63
Transform
El componente Transform determina la Position, Rotation, y Scale de cada objeto en la escena.
Cada GameObject tiene un Transform.
Propiedades
Propiedad: Función:
Position Posición del Transform en coordenadas X, Y, Z.
Rotation Rotación del Transform alrededor de los ejes X, Y, Z,
medido en grados.
Scale Scale (Escala) del Transform a lo largo de los ejes X, Y
y Z. Un valor de “1” es el tamaño original (el tamaño
con el cual el objeto fue importado).
Los valores de posición, rotación, y escala de un Transform son medidos relativamente al padre
del Transform. Si el Transform no tiene padre, las propiedades son medidas en el espacio del
mundo.
Guardando Su Trabajo
Unity almacena muchos tipos diferentes de información sobre su proyecto, y algunos de ellos se
almacenan de forma diferente al resto. Esto significa que cuándo su trabajo será guardado
dependerá de qué tipos de cambios está haciendo.
Por supuesto, recomendamos guardar con frecuencia, y usar un Sistema de Control de Versiones
(VCS) para preservar los cambios incrementales de su trabajo, y permitirle hacer pruebas y
deshacer los cambios sin arriesgarse a perder el trabajo.
64
Los cambios de una escena incluyen modificaciones de cualquier objeto de la Hierarchy. Por
ejemplo, añadir, mover o borrar GameObjects, cambiar parámetros de la jerarquía de
GameObjects en el inspector.
Para guardar cambios a la escena, seleccione Save Scene en el menú File, o pulse Ctrl/Cmd + S.
Esto guarda los cambios actuales a la escena y hace un “Guardar Proyecto” (más adelante).
Esto significa que cuando hace un “Save Scene”, se guarda todo .
65
Algunos de los cambios que pueden realizarse en Unity no son específicos de escenas, sino que
son de todo el proyecto. Estas configuraciones pueden guardarse de manera independiente de los
cambios de escena seleccionando “Save Project” desde el menú File.
Usar “Save Project” no guarda los cambios de la escena, sólo los del proyecto. Puede querer, por
ejemplo, guardar su proyecto pero no los cambios de su escena si ha usado una escena temporal
para hacer algunos cambios a un prefab.
Los cambios a todo el proyecto que son guardados al hacer “Save Project” incluyen:
Toda la “Project Settings” (Configuración del proyecto):
Toda la configuración para cada elemento del menú “Project Settings”, como ejes de entrada a
medida, etiquetas definidas por el usuario o capas, y las fuerzas físicas gravitacionales son
salvadas al hacer “Save Project”.
66
Luces (Lights)
Las Lights son una parte esencial de cada escena. Mientras meshes y texturas definen la forma y
la apariencia de una escena, las luces(lights) definen el color y ánimo de su entorno en 3D.
Seguramente trabajará con más de una luz en cada escena. Hacerlas trabajar juntas requiere un
poco de práctica, pero los resultados pueden ser bastante sorprendente.
69
Las luces(lights) pueden ser agregadas a su escena desde el menú del GameObject->Create
Other. Una vez una luz haya sido agregada, usted puede manipularla como cualquier otro
GameObject. Adicionalmente, puede agregar un Light Component a cualquier GameObject
seleccionado usando Component->Rendering->Light.
Hay muchas diferentes opciones dentro el Light Component en el Inspector.
70
Simplemente cambiando el Color de una luz, puede darle un cambio completamente diferente al
estado de ánimo de la escena.
Rendering paths
Unity soporta diferentes Rendering Paths. Estos caminos afectan principalmente las Luces y las
Sombras, entonces escoger el rendering path correcto, dependiendo los requerimientos de su
juego, puede hacer que el rendimiento de su proyecto mejore.
Creando Scripts
A diferencia de la mayoría de otros assets, los scripts son usualmente creados dentro de Unity
directamente. Usted puede crear un nuevo script desde el menú Create en la parte superior
izquierda del panel del Proyecto o seleccionando Assets > Create > C# Script (o JavaScript)
desde el menú principal.
El nuevo script será creado en la carpeta que usted haya seleccionado en el Panel del Proyecto.
El nuevo nombre del archivo script será seleccionado, pidiéndole a usted que ingrese otro nuevo
nombre.
73
Es una buena idea ingresar el nombre del nuevo script en este punto en vez de editarlo después.
El nombre que usted ingrese será utilizado para crear el texto inicial dentro del archivo, como es
descrito abajo.
}
}
Un script hace sus conexiones con el funcionamiento interno de Unity al implementar una clase
que deriva desde la clase integrada llamada MonoBehaviour. Usted puede pensar una clase como
un tipo de plano (blueprint) para crear un nuevo tipo de Component que puede ser adjuntado a
GameObjects. Cada vez que usted adjunte un componente script a un GameObject, éste crea una
nueva instancia del objeto definido por el plano. El nombre de la clase es tomado desde el
nombre que usted proporciona cuando el archivo se crea. El nombre de la clase y el archivo se
debió suministrar cuando el archivo fue creado. El nombre de la clase y el archivo debe ser el
mismo para permitirle al componente script en ser adjuntado al GameObject.
La primera cosa para tener en cuenta son dos funciones definidas dentro de la clase. La función
Update es el lugar para colocar el código que se encargará de la actualización por frame para el
GameObject. Este puede incluir movimiento, acciones de trigger y responder al input del
usuario, básicamente cualquier cosa que necesite ser manejado en el tiempo durante el gameplay.
Para que la función Update haga su trabajo, a veces es útil configurar variables, leer preferencias
y hacer conexiones con otros GameObjects antes de que cualquier acción del juego tome lugar.
La función Start va a ser llamada por Unity antes de que el gameplay comience (ie, antes de que
la función Update sea llamada por la primera vez) y es un lugar ideal para hacer cualquier
inicialización.
Recomendación para programadores con experiencia: Usted puede sorprenderse que la
inicialización de un objeto no es hecho utilizando una función constructora. Esto se debe a que la
construcción de los objetos es manejado en el editor y no toma lugar al comienzo del gameplay
como usted podría suponer. Si usted intenta definir un constructor para un componente script,
74
éste va a interferir con la operación normal de Unity y puede causar problemas mayores con el
proyecto.
Una script de UnityScript funciona un poco diferente a un script de C#:
#pragma strict
function Start () {
function Update () {
Aquí, las funciones Start y Update tienen el mismo significado pero la clase no está
explícitamente declarada. El script en sí mismo es asumido para definir la clase; éste va a derivar
implícitamente desde MonoBehaviour y toma su nombre desde el nombre del archivo (filename)
del asset script.
Controlando un GameObject
Como es dicho arriba, un script solo define un plano para un Component por lo que nada de su
código será activado hasta que una instancia del script es adjuntada al GameObject. Usted puede
adjuntar un script arrastrando el script asset a un GameObject en el panel de la jerarquía o al
inspector del GameObject el cual está actualmente seleccionado. También hay un sub-menú de
Scripts en el menú del Componente que va a contener todos los scripts disponibles en el
proyecto, incluyendo aquellos que usted ha creado usted mismo. La instancia de script se ve
mucho como cualquier otro Componente en el Inspector:
Una vez adjuntado, el script va a comenzar a funcionar cuando usted presione Play y corra el
juego. Usted puede revisar esto al agregar el siguiente código en la función Start:-
Variables y el Inspector
Cuando cree un script, usted está esencialmente creando su nuevo propio tipo de componente
que puede ser adjuntado a Game Objects como cualquier otro componente.
75
Al igual que otros Componentes tienen propiedades que son editables en el inspector, usted
puede permitir valores en su script a ser editados desde el Inspector también.
using UnityEngine;
using [Link];
}
}
Unity crea la etiqueta del Inspector introduciendo un espacio dónde una mayúscula ocurra en el
nombre de la variable. Sin embargo, esto es para propósitos netamente de pantalla y usted
debería siempre utilizar el nombre de la variable dentro de su código. Si usted edita el nombre y
presiona Reproducir, usted verá que el mensaje incluye el texto que usted ingreso.
En C#, usted debe declarar una variable como pública para verla en el Inspector. En UnityScript,
las variables son públicas por defecto al menos de que usted especifique de que deberían ser
privadas:
#pragma strict
function Start () {
76
Unity le va a permitir a usted cambiar el valor de las variables del script mientras el juego esté
corriendo. Esto es muy útil para ver los efectos de cambios directos sin tener que parar y
reiniciar. Cuando el modo de juego termine, los valores de las variables se van a reset a lo que
sea que estaban antes de que usted pusiera Reproducir. Esto asegura que usted está libre de
ajustar las configuraciones de sus objetos sin miedo de hacer un daño permanente.
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
}
function Start () {
var rb = GetComponent.<Rigidbody>();
}
Una vez usted tenga una referencia a la instancia del Componente, usted puede configurar los
valores de sus propiedades como usted quiera en el Inspector:
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
[Link] = 10f;
}
void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
// Add a force to the Rigidbody.
[Link]([Link] * 10f);
}
Tenga en cuenta que no hay razón para que usted no pueda tener más de un script personalizado
adjunto al mismo objeto. Si usted necesita acceder un script desde otro, usted puede utilizar
GetComponente y simplemente utilizar el nombre de la clase script (o nombre del archivo) para
especificar el tipo de Componente que usted quiere.
Si usted intenta recuperar un Componente que no ha sido agregado al GameObject entonces
GetComponent va a devolverle null; usted va a obtener una referencia nula de error en el tiempo
de ejecución si usted intentar cambiar cualquier valor en el objeto nulo.
Usted puede ahora arrastrar un objeto desde la escena o panel de Jerarquía a esta variable para
asignarlo. La función GetComponent y las variables de acceso a Componentes están disponibles
para este objeto como cualquier otro, entonces usted puede utilizar código como el siguiente:
void Start() {
// Start the enemy ten units behind the player character.
[Link] = [Link] - [Link] * 10f;
}
}
using UnityEngine;
void Start() {
waypoints = new Transform[[Link]];
int i = 0;
Usted también puede ubicar un objeto hijo especifico por el nombre utilizando la función
[Link] :
[Link]("Gun");
Esto puede ayudar cuando un objeto tiene un hijo que puede ser agregado y quitado durante el
tiempo de juego. Un arma que puede ser recogida y dejada en el suelo es un buen ejemplo de
esto.
GameObject player;
void Start() {
player = [Link]("MainHeroCharacter");
}
Un objeto o una colección de objetos también pueden ser ubicadas por su tag (etiqueta)
utilizando las funciones [Link] y [Link] .
GameObject player;
GameObject[] enemies;
void Start() {
player = [Link]("Player");
enemies = [Link]("Enemy");
}
Consideraciones Multi-plataforma
Muchas de las APIs de Unity y estructuras de proyecto son idénticas para todas las plataformas
soportadas, y en algunos casos un proyecto puede simplemente ser reconstruido para ejecutarse
en diferentes dispositivos. Sin embargo, las diferencias fundamentales en el hardware y en
métodos de despliegue hacen que algunas partes del proyecto no puedan ser portadas entre
plataformas sin haber hecho cambios. A continuación se encuentran detalles de algunos
problemas comunes de plataforma cruzada, y sugerencias para solucionarlos.
Entrada
El ejemplo más obvio del comportamiento distinto entre plataformas es en los métodos de
entrada ofrecidos por el hardware.
Teclado y joypad
La función [Link] es muy conveniente en plataformas de escritorio como una forma de
consolidar la entrada desde el teclado y el joypad. Sin embargo, esta función no tiene sentido
para las plataformas móviles que se basan en la entrada por medio de la pantalla táctil.
Igualmente, la entrada de teclado estándar de escritorio no porta bien en móviles para otras cosas
que no sean texto escrito. Vale la pena agregar una capa de abstracción al código que maneja la
entrada, si consideras en el futuro portar el juego a otras plataformas. A modo de un ejemplo
simple, si estuvieras haciendo un juego de conducir entonces podrías crear tu propia clase de
entrada y envolver los llamados de API de Unity usando tus propias funciones:-
return currentGear;
}
Una ventaja de envolver los llamados de API en una clase como esta es que todos ellos están
concentrados en un solo archivo fuente, y en consecuencia, será fácil su localización y
reemplazo. Sin embargo, lo más impontante es que debes diseñar tus funciones de entrada de
acuerdo al significado lógico de las entradas en tu juego. Esto será de ayuda para aislar del resto
del código del juego el método específico de entrada usado con una plataforma en particular. Por
ejemplo, la función Gears de arriba podría ser modificada para que la entrada real provenga de
toques en la pantalla de un dispositivo móvil. Si se usa un integer para representar la
indumentaria escogida, esto funcionará bien en todas las plataformas; pero si se mezcla con el
resto del código los llamados de API específicos a la plataforma, esto causará problemas. Puedes
ver conveniente el utilizar compilación dependiente de la plataforma para combinar las diferentes
implementaciones de las funciones de entrada en el mismo archivo fuente, para evitar
intercambios manuales.
Toques y Clics
Las funciones [Link] están diseñadas para que tengan una interpretación
razonablemente obvia en dispositivos móviles aunque no haya un “mouse” como tal. Un simple
toque en la pantalla será reportado como un clic con el botón izquierdo del mouse, y la propiedad
[Link] devuelve la posición del toque mientras el dedo está tocando la pantalla.
Esto significa que los juegos que tengan interacción simple de mouse usualmente pueden trabajar
transparentemente entre las plataformas de escritorio y móvil. Naturalmente, no obstante, con
frecuencia la conversión es mucho menos sencilla que esto. Un juego de escritorio puede hacer
uso de más de un botón del mouse, y un juego para móviles puede detectar múltiples toques en la
pantalla al mismo tiempo.
Al igual que con los llamados de API, el problema puede ser manejado de forma parcial
representando la entrada con valores lógicos que son luego usados por el resto del código del
juego. Por ejemplo, un gesto de “pellizco” para dar zoom en un móvil podría ser reemplazado
por un botón/atajo de + y - en la version de escritorio; la función de entrada podría simplemente
devolver un valor float que especifique el factor de zoom. Igualmente, podría ser posible usar un
tap con dos dedos en móviles para reemplazar el clic con el botón derecho del mouse. Sin
embargo, si las propiedades del dispositivo de entrada son una parte integral del juego, entonces
no puede ser posible remodelarlos en una plataforma diferente. Esto puede significar que el
juego no puede ser portado a todas ellas, o que la entrada y/o la mecánica de juego necesiten ser
modificadas ampliamente.
Acelerómetro, brújula, giroscopio y GPS
Estas entradas provienen de la movilidad de los dispositivos móviles, por lo que puede ser que
no tengan un equivalente significativo en el ambiente de escritorio. Sin embargo, en algunos
casos sólo son un reflejo de controles estándar de juegos y pueden ser portados muy fácilmente.
Por ejemplo, un juego de conducción podría implementar el control de dirección a partir de la
inclinación de un dispositivo móvil (determinada por el acelerómetro). En casos así, los llamadas
API para entrada usualmente son fáciles de reemplazar, de modo que la entrada del acelerómetro
puede ser reemplazada por pulsaciones del teclado, por decir algo. Sin embargo, puede ser
necesario recalibrar las entradas o incluso variar la dificultad del juego para tener en cuenta cada
82
método de entrada distinto. Inclinar un dispositivo es más lento y eventualmente más agotador
que presionar teclas, y también puede hacer más difícil que el jugador se concentre en la pantalla.
Esto puede resultar en que el juego se vuelva más difícil de dominar en un móvil, de modo que
puede ser apropiado frenar el ritmo de la mecánica de juego o conceder más tiempo por nivel.
Esto requerirá que el código del juego sea diseñado para que estos factores puedan ser ajustados
con facilidad.
Reproducción de películas
Hoy en día, los dispositivos móviles son altamente dependientes del soporte de hardware para
permitir la reproducción de películas. El resultado es que estas opciones de reproducción son
limitadas e indudablemente no ofrecen la flexibilidad que el asset MovieTexture tiene en
plataformas de escritorio. Las películas pueden ser reproducidas en pantalla completa en
móviles, pero no hay enfoque alguno sobre usarlos para texturizar objetos dentro del juego (así
que no es posible mostrar una película en una pantalla de TV dentro del juego, por ejemplo). En
términos de portabilidad, está bien usar películas para introducciones, vídeos con escenas de la
historia (cutscenes), instrucciones y otras presentaciones sencillas. Sin embargo, si las películas
necesitan ser visibles dentro del escenario de juego entonces debes considerar si las opciones de
reproducción en móviles serán lo adecuado.
Requerimientos de almacenamiento
El video, el audio e incluso las texturas pueden usar una gran cantidad de almacenamiento y
podrías necesitar tener esto en mente si quieres portar tu juego. El espacio de almacenamiento (el
cual con frecuencia también corresponde al tiempo de descarga) no es usualmente un problema
en máquinas de escritorio, pero este no es el caso con los móviles. Además, las tiendas de
aplicaciones móviles imponen un límite sobre el tamaño máximo de un producto enviado. Puede
requerir algo de planeación para abordar estos asuntos durante el desarrollo de tu juego. Por
ejemplo, podrías necesitar el proporcionar versiones simplificadas de los assets para móviles a
fin de ahorrar espacio. Otra posibilidad es que el juego pueda necesitar ser diseñado para que los
assets grandes puedan ser descargados bajo demanda en lugar de ser parte de la descarga inicial
de la aplicación.
móviles hacen que la recolecciones de basura puedan ser más frecuentes, y el tiempo que éstas
tomen puede impactar más intensamente sobre el desempeño (causando pausas no deseadas en el
transcurso del juego, etc). Incluso si el juego se ejecuta con la memoria disponible, puede ser
necesario optimizar el código para evitar las pausas de recolección de basura. Puede encontrarse
más información en la página sobre gestión de memoria.
Potencia de la CPU
Un juego que se ejecute bien en una máquina de escritorio podría sufrir de una baja velocidad de
cuadros en un móvil, debido a que el CPU de un móvil tiene que lidiar con la complejidad del
juego. Por tanto, se puede necesitar el poner atención extra a escribir un código más eficiente
cuando un proyecto es portado a una plataforma móvil. Un número de pasos simples para
mejorar la eficiencia son explicados en esta página del manual.
La primera vez que vea esta ventana en un proyecto, va a aparecer en blanco. Si construye un
juego mientras esta lista esté en blanco, solamente la escena que actualmente se encuentre abierta
va a ser incluida en su construcción. Si usted quiere construir rápidamente un test player con un
solo archivo de escena, simplemente construya un jugador con una lista de escena en blanco.
Es fácil agregar archivos de escena a la lista de la construcción de multi-escenas. Hay dos
maneras para agregarlas. La primer forma es haciendo click en el botón Add Open Scenes. Va a
ver la escena que está actualmente abierta en la lista. La segunda forma de agregar archivos de
escena es arrastrando los del Project View a la lista.
En este punto, observe que cada una de sus escenas tienen un valor de indice diferente. Scene 0
es la primera escena que va a cargarse cuando se construya el juego. Cuando quiera cargar una
escena nueva, use [Link]() dentro de sus scripts.
85
cargue un nivel, o para game controller scripts que hacen que se mantenga el estado del
juego y el progreso.
• Después de que un nivel finalice de cargar, el mensaje: OnLevelWasLoaded() va a ser
mandado a todos los GameOjects que estén activos.
Precarga
Construcciones publicadas automaticamente precargan todos los assets en una escena cuando la
escena carga. La excepción a esta regla es Scene 0. Esto es porqué la primera escena es
usualmente un spashscreen, que uno quiere mostrar lo más rápido posible.
Para asegurarse que todo su contenido haya sido precargado, puede crear una escena vacía que
llame [Link](1). En las build settings haga que el indice de esta escena sea 0.
Todos los niveles posteriores serán precargados.
CONCLUSION
Realizar esta investigación y documentación de una herramienta tan práctica como es Unity nos
ayuda a darnos cuenta de la dificultad real que tiene el desarrollo de los juegos que tanto nos
gustan y que gracias a estás mismas su desarrollo es más llevadero y menos tedioso a
comparación de como lo era hace unos 20 años.
También nos dejó una mayor estimación a aquellos que se dedican por completo al desarrollo de
los videojuegos, ya que gracias a su dedicación de miles de horas nosotros podemos disfrutar de
87
algunas obras maestras en nuestro tiempo, y nos ayuda a respetarlos más debido a que
pertenecemos a un área en común y sabemos lo que cansado que puede ser el estar sentados y
pensando que hacer para que nuestros trabajos sean más sobresalientes y ofrezcan algo más que
la competencia.
FUENTES CONSULTADAS
Manual De Unity. (s. f.). Recuperado 10 de mayo de 2020, de
[Link]
M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de 2020, de
[Link]
M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de 2020, de
[Link]
El Transform Component en Unity es crucial para todos los GameObjects, ya que define su posición, rotación y escala en la escena del juego. Sin un Transform Component, un GameObject no tendría una representación tangible en el mundo del juego; sería simplemente información en la memoria del computador. Este componente permite la funcionalidad de parenting, lo que significa que la transformación de un GameObject puede afectar a otros objetos vinculados jerárquicamente. Esto lo convierte en un elemento imprescindible para la colocación y orientación de objetos en el desarrollo de juegos .
En Unity, un GameObject es un objeto fundamental que actúa como un contenedor para diferentes Components. Los GameObjects por sí solos no realizan ninguna función hasta que se les añaden Components, que son los que otorgan funcionalidad. Por ejemplo, al añadir un componente Light a un GameObject, se convierte en una fuente de luz. Los GameObjects siempre tienen un Transform Component, que determina su posición, rotación y escala en el mundo del juego, y permite el parenting entre objetos. Esta relación modular entre GameObjects y Components permite personalizar y escalar las funcionalidades en el desarrollo de juegos, ya que los desarrolladores pueden combinar diferentes Components para lograr el comportamiento deseado de un GameObject .
En Unity, los GameObjects son contenedores flexibles que pueden representar una variedad de elementos del juego, desde personajes hasta efectos especiales. Esto se logra mediante la adición de diferentes Components a un GameObject. Por ejemplo, un GameObject puede convertirse en un personaje al agregarle componentes de animación y física, mientras que otro puede ser un árbol con componentes de malla y apariencia visual. La combinación de Components define su comportamiento y funcionalidad en el juego, permitiendo a los desarrolladores crear una amplia gama de elementos interactivos y visuales .
La Project Window de Unity es una herramienta central para la gestión de assets. Presenta una estructura jerárquica de carpetas que refleja la carpeta 'Assets' del proyecto en el computador. Los desarrolladores pueden seleccionar carpetas para ver su contenido, expandir o colapsar estructuras anidadas, y arrastrar elementos a una sección de Favoritos para un acceso rápido. La capacidad de redimensionar y cambiar la vista entre iconos y listas jerárquicas mejora la flexibilidad en la organización visual de los assets. Además, una barra de navegación facilita el retorno a diferentes niveles del sistema de archivos rápidamente, y el sistema de búsqueda permite a los usuarios encontrar assets específicos con facilidad .
La carpeta 'Assets' es un elemento central en la estructura de un proyecto de Unity, donde se deben almacenar todos los archivos que se utilizan en el proyecto. El contenido de la carpeta 'Assets' se muestra en la Project Window de Unity, desde donde los archivos se gestionan e integran al proyecto. Unity detecta automáticamente cuando se añaden o modifican archivos dentro de esta carpeta y los importa para su uso. Los desarrolladores pueden organizar los Assets creando subcarpetas. Es importante que cuando se muevan o renombren archivos, también se haga con sus respectivos archivos .meta para evitar errores .
Los ajustes de importación en Unity determinan cómo se configura un asset cuando es importado al proyecto. Estos ajustes varían dependiendo del tipo de asset; por ejemplo, un archivo de imagen puede ser importado como una textura, un sprite 2D, o un normal map, y cada importación afectará su uso y propiedades dentro del juego. El Inspector muestra estos ajustes y permite modificarlos según las necesidades del proyecto. Además, en proyectos multiplataforma, los ajustes por defecto pueden ser sobreescritos para optimizar cada plataforma específica, permitiendo un control detallado sobre el rendimiento y la apariencia de los assets .
Los archivos .meta en Unity son vitales porque contienen información crucial sobre cómo se utilizan los assets dentro del proyecto. Cada asset y carpeta dentro de la carpeta 'Assets' tiene un archivo .meta asociado que no es visible en la Project Window. Si los archivos o carpetas se mueven o renombran en el sistema, los archivos .meta correspondientes deben ser movidos o renombrados también, para asegurar que la vinculación se mantenga intacta. La manera más segura de mover o renombrar assets es hacerlo desde dentro del editor de Unity, para que los cambios en los archivos .meta se realicen automáticamente .
En Unity, los cambios realizados a los Components mientras el juego está en modo Play son revertidos automáticamente al salir de este modo. Esto significa que cualquier ajuste realizado durante la simulación, como experimentar con diferentes valores de altura de salto, no afectará los ajustes guardados del proyecto. Esta característica es útil porque permite a los desarrolladores probar interactivamente y ajustar aspectos del juego sin riesgo de perder configuraciones originales, facilitando un proceso iterativo de desarrollo y refinamiento para mejorar la experiencia de juego .
Para abrir un proyecto existente en Unity que no está listado, primero seleccione 'Open' para acceder al Finder en Mac OS X o al Explorador de Archivos en Windows. Navegue hasta la carpeta del proyecto que desea abrir y selecciónelo. No es necesario seleccionar un archivo específico de proyecto de Unity, ya que un proyecto se compone de una colección de archivos. Simplemente señale al editor de Unity la carpeta completa que contiene el proyecto .
El Component Browser en Unity es una herramienta que simplifica la adición y manejo de Components en un GameObject. Al usar el botón 'Add Component' en el inspector de un objeto, el desarrollador puede acceder a un menú organizado de Components disponibles, explorarlos por categoría, e incluso buscar componentes específicos mediante texto. Esto no solo hace que sea más fácil personalizar un GameObject al agregar nuevas funcionalidades, sino que también hace que el proceso sea más eficiente y menos propenso a errores. El uso del Component Browser posibilita a los desarrolladores aumentar la complejidad de objetos en el juego de manera controlada y organizada, mejorando la productividad en el desarrollo .