Está en la página 1de 94

Instituto Tecnológico de La Piedad

DEPARTAMENTO DE SISTEMAS Y COMPUTACION


INGENIERIA EN SISTEMAS COMPUTACIONALES

TRABAJO DE INVESTIGACION “DESARROLLO DE VIDEOJUEGOS


EN UNITY”

TALLER DE INVESTIGACION I

PRESENTA:
JOSUE FAVILA GUTIERREZ
JESUS ELISEO OROZCO GUILLEN

LA PIEDAD, MICHOACÁN 28 DE MAYO DEL 2020


2

INDICE
INDICE 2

INTRODUCCION 7

ANTECEDENTES 7

PROBLEMATICA 7

JUSTIFICACION 8

LIMITACIONES 8

Objetivo General 8

Objetivos específicos 9

AGRADECIMIENTOS 9

CAPITULO 1: HISTORIA DE LOS VIDEOJUEGOS 10

1.1.- Definición de Juego: 10

1.2.- Definición de Videojuego: 10

1.3.- Evolución de los videojuegos: 10

1.4.- Aparición de los videojuegos: 11

CAPITULO 2: HERRAMIENTAS GRAFICAS PARA DESARROLLAR UN


VIDEOJUEGO 12

2.1 ¿QUE ES UN MOTOR GRAFICO? 12

2.2 TIPOS DE MOTORES GRAFICOS DE LA HISTORIA 12

2.2.1 Doom 12

2.2.2 Build 12

2.2.3 Quake 13

2.2.4 RenderWare 13

2.2.5 Quake II 13

2.2.6 GoldSRC 13

2.2.7 Unreal 14

2.2.8 Quake III 14

2.2.9 Unreal II 14

2.2.10 Source 14

2.2.11 CryEngine 15

2.2.12 Unreal 3 15

2.2.13 Euphoria 15

2.2.14 Dunia 15

CAPITULO 3: UNITY 16

3.1 ¿QUE ES UNITY? 16

3.2 HISTORIA DE UNITY 17

CAPITULO 4: INSTALACION DE UNITY 18

4.1 DESCARGAR UNITY 18

4.2 CONFIGURANDO LAUNCHER 20

CAPITULO 5: ENTORNO DE UNITY 22

5.1 CREANDO UN PROYECTO 22

5.1.1 Abriendo un Proyecto 25

5.2 CONOCIENDO EL MOTRO GRAFICO 27

5.2.1 La ventana del Proyecto 28

5.2.2 La Scene View (vista de escena) 29

5.2.3 La ventana de Jerarquía 30

5.2.4 La ventana del Inspector 31

5.2.5 La barra de herramientas 31

5.3 ASSETS 32

5.4 Objetos Primitivos 32

5.4.1 Cubo 33

5.4.2 Esfera 34

5.4.3 Cápsula 35

5.4.4 Cilindro 36

5.4.5 Plano 37

5.4.6 Quad 38

5.5 Importando Assets 38

5.6 Algunos tipos comunes de Asset 40

5.6.1 Archivos de Imagen 40

5.6.2 Archivos de modelos 3D 40

5.6.3 Meshes & Animaciones 41

5.6.4 Archivos de Audio 41

5.6.5 Otros tipos de Asset 41

5.7 Import Settings (Ajustes de Importación) 42

5.8 La ventana Project 43

5.9 Navegación del Scene View 48

5.10 Modo Flythrough 50

5.11 Posicionando GameObjects 52

5.12 Snapping de superficies 54

5.13 Look-At Rotation 54

5.14 Vertex Snapping 54

5.15 La Vista del Juego (Game View) 55

5.16 Creación de Juego 58

5.17 Escena 58

5.17.1 Guardando Escenas 59

5.17.2 Abriendo Escenas 59

5.18 GameObjects 60

5.19 GameObject 60

5.20 El Transform Component 61

5.21 Usando Components 62

5.22 Agregando Components 63

5.22.1 El Component Browser 64

5.23 Editando Components 64

5.24 El Component Context Menu 68

5.25 Eliminar(Remove) 68

5.26 Moverse Arriba/Abajo 68

5.27 Copiar/Pegar 68

5.28 Probando las Propiedades 69

5.29 Transform 69

5.29.1Propiedades 69

5.30 Guardando Su Trabajo 69

5.30.1 Guardar cambios de la escena actual (“Save Scene”) 70

5.30.2 Guardar cambios a todo el proyecto (“Save Project”) 71

5.31 El menú Project Settings (Configuración de Proyecto) 72

5.32 Cambios a los assets en la Project Window (ventana de proyecto) 74

5.33 Cambios que se escriben inmediatamente al disco (no necesitan ser guardados)
74

5.34 Otros cambios que se guardan inmediatamente 74

5.35 Luces (Lights) 75

5.36 Rendering paths 78

5.37 Creando y usando scripts 78

5.37.1 Creando Scripts 78

5.37.2 Anatomia de un archivo Script. 79

5.38 Controlando un GameObject 80

5.39 Variables y el Inspector 81

5.40 Controlando GameObjects utilizando Componentes 82

5.41 Accediendo Componentes 83

5.42Accediendo Otros Objetos 84

5.43 public Transform playerTransform; 85

5.44 Encontrando Child Objects (Objetos Hijos) 85

5.45 Encontrando Objetos por Name (nombre) o Tag (Etiqueta) 86

CAPITULO 6: EXPORTACION DE PROYECTOS 87

6.1 Consideraciones Multi-plataforma 87

6.2 Entrada 87

6.3 Teclado y joypad 87

6.4 Toques y Clics 88

6.5 Acelerómetro, brújula, giroscopio y GPS 89

6.6 Memoria, almacenamiento y desempeño de CPU 89

6.7 Reproducción de películas 89

6.8 Requerimientos de almacenamiento 90

6.9 Gestión automática de memoria 90

6.10 Potencia de la CPU 90

6.11 Publicando Construcciones (Publishing Builds) 90

6.12 Construyendo reproductores independientes (Building standalone players) 92

6.13 Precarga 93

CONCLUSION 94

FUENTES CONSULTADAS 94
7

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
8

que nos llevó a seleccionar este tema, el ayudar al sano entretenimiento de las
personas de cualquier edad.

JUSTIFICACION

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

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.

10

CAPITULO 1: HISTORIA DE LOS VIDEOJUEGOS

1.1.- Definición de Juego:

Los juegos son todas aquellas actividades que realizan una o varias personas llamadas
jugadores que, independientemente de su edad, profesión/ocupación o estatus social,
emplean su imaginación o herramientas para crear una situación con un número
determinado de reglas, con el fin de obtener o proporcionar entretenimiento y
diversión. Existen juegos donde el principal objetivo es ganar una competencia, a
estos juegos se les llama competitivos, y también existen juegos en los que solamente
el objetivo es jugar y divertirse, a estos se les conoce como juegos no competitivos.

1.2.- Definición de Videojuego:

Un videojuego es un juego electrónico en el que una o más personas interactúan, por


medio de un controlador, con un dispositivo que muestra imágenes de video. Este
dispositivo electrónico, conocido generalmente como plataforma, puede ser una
computadora, una maquina de arcade, una videoconsola o un dispositivo portátil, por
ejemplo, los teléfonos móviles.

Generalmente los videojuegos utilizan algún otro tipo de herramienta, además de las
visuales, para la interacción con los jugadores, por ejemplo los altavoces o algún
dispositivo que nos permita estar más inmersos en la experiencia de juego.

1.3.- Evolución de los videojuegos:

No podemos hablar de los videojuegos sin hablar de las plataformas donde los
podemos jugar, pues estos siempre van de la mano a lo largo de la evolución.

Los videojuegos aparecen en la década de los 50’s, cuando aparecen las primeras
computadoras poco después del final de la WWII, mas que nada al final de los 50’s,
cuando aparecen el Tennis for Two (1958) y SpaceWar (1962), los cuales fueron los
pioneros de esta forma de entretenimiento, sin embargo no eran comerciales por ser
en sí unos prototipos y que funcionaban en máquinas que estaban disponibles en las
universidades.

No sería hasta la década de los 70’s donde ahora si veríamos el inicio oficial de los
videojuegos, cuando la compañía Atari saca a la luz Computer Space (1971) y el
famosísimo pong (1972), los cuales funcionaban en maquinas de monedas. Poco
después, en 1972 surge la Magnavox Odyssey, creada por Ralph Baer y distribuida por
phillips en Estados Unidos, y un poco más tarde la exitosa Atari 2600 (1977) con su
innovador sistema de cartuchos intercambiables. Un año más tarde iniciaban las
máquinas de videojuegos en los bares y salones de entretenimiento, esto debido a un
11

juego mata marcianos llamado Space Invaders(1978), uno de los más grandes e
icónicos juegos de la historia. Otros de los juegos importantes de la década fueron
Galaxian (1979), Asteroids (1979) y el igualmente famoso Pac-Man (1980).

En los 80’s Atari empieza a sentir la presión de la competencia, pues surgen Nintendo
y SEGA y surgen consolas como la NES de Nintendo y la Master System de SEGA. Sin
embargo los ordenadores portátiles empiezan a tomar fuerza pues ahora tienen
mejores capacidades gráficas y se vuelven mucho más asequibles para la gente en
general. Es a partir de este momento que los videojuegos se hacen una empresa
mucho más notoria, y donde surgen la mayoría de los géneros que existen hoy en día
(conducción, lucha, estrategia, plataformas, aventura). Y también a finales de la
década de los 80´s más precisamente en 1989 Nintendo saca a la luz el GameBoy, la
consola más popular de bolsillo.

En los 90´s se da el salto a los 16 bits, y empresas como Nintendo y SEGA sacan sus
consolas que soporten este nuevo sistema, como lo son el SNES y la Mega Drive y
además, en 1994 entra a la competencia el gigante Sony con el mega conocido Play
Station 1 (PS1 abreviadamente), mientras que Nintendo y SEGA se actualizan y lanzan
consolas como el Nintendo 64 y la SEGA Saturn. En cuanto a las PC’s, su avance
barre a los demás competidores excepto a Apple. Los juegos ahora necesitan mejores
recursos y surge el género shooter 3D (coloquialmente conocidos como juegos de
disparos). En 2002 Microsoft entra en el sector con el Xbox original y en 2006 Nintendo
lanza la wii, mientras que Sony lanza las actualizaciones de su consola original (PS2 y
PS3).

Finalmente en el 2010 los videojuegos llegan a los dispositivos móviles, como lo son
los Smartphones y las tabletas.

1.4.- Aparición de los videojuegos:

Los videojuegos como tal aparecen en los sistemas de Atari en 1971 con juegos como
Computer Space y Pong. Aunque si bien hay registros de años anteriores, estos no se
toman en cuenta debido a que no eran para distribución comercial, sino que eran más
exclusivos debido a que las plataformas donde se podían usar eran muy caras para las
familias de aquel momento. Desde ese momento, la industria de los videojuegos fue
creciendo de a poco, hasta los 90´s donde el crecimiento fue más notorio y
exponencial. Y, ahora en la actualidad, podemos gozar de un gran número de títulos de
videojuegos que no parece que fuera hace tan poco su inicio.

12

CAPITULO 2: HERRAMIENTAS GRAFICAS PARA


DESARROLLAR UN VIDEOJUEGO

2.1 ¿QUE ES UN MOTOR GRAFICO?

Un motor gráfico, es un conjunto de herramientas, diseñadas para el desarrollo y


creación de videojuegos, desde agregar personajes, editar sus facciones, agregarles
movimientos, hacer acciones, como disparos, anotaciones, juntar objetos, entre otras
cosas.

2.2 TIPOS DE MOTORES GRAFICOS DE LA HISTORIA

A lo largo de la historia, han existido diversos motores gráficos, que fueron parte de la
evolucion, algunos de ellos son:

2.2.1 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.

2.2.2 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.

13

2.2.3 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 empezaban a implementar el Z-buffering y este motor le
sacaba provecho a esa funcionalidad, se ahorraban grandes cantidades de consumo
del CPU.

Este motor tenía otro truco interno para economizar tiempo de procesamiento:
constaba de un pre-rendering que desechaba zonas del mapa y objetos que el jugador
no podía ver, lo cual recortaba la cantidad de polígonos casi a la mitad.

2.2.4 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).

2.2.5 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.

2.2.6 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.

14

2.2.7 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 colores y un rudimentario método de filtro de
texturas. Aprovechó las extensiones multimedia de los nuevos procesadores de la
época: tanto AMD 3DNow!, como Intel MMX y SSE.

2.2.8 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.

2.2.9 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.

2.2.10 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.

15

2.2.11 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.

2.2.12 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.

Los títulos más destacados de este motor son Unreal Tournament 3, Mass Effect 1 y 2
y Rainbow Six: Vegas.

2.2.13 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.

2.2.14 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.

16

CAPITULO 3: UNITY

3.1 ¿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.

El editor de Unity es el centro de la linea de producción, ofreciendo un completo editor


visual para crear juegos. El contenido del juego es construido desde el editor y el
gameplay se programa usando un lenguaje de scripts. Esto significa que los
desarrolladores no necesitan ser unos expertos en C++ para crear juegos con Unity, ya
que las mecánicas de juego son compiladas usando una versión de JavaScript, C# o
Boo, un dialecto de Python.

Los juegos creados en Unity son estructurados en escenas como el motor Gamebryo.
En Unity una escena puede ser cualquier parte del juego, desde el menú de inicio
como un nivel o área del juego.

El motor también incluye un editor de terrenos, desde donde se puede crear un terreno
(como una hoja en blanco), sobre la que los artistas podrán esculpir la geometría del
terreno usando 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 es un sistema de desarrollo unico. Es enfocado en los assets y no en el codigo,


el foco en los assets es similar al de una aplicación de modelado 3D.

Un juego construido en Unity se compondrá de un proyecto. Contiene todos los


elementos de su proyecto, tales como los modelos, guiones, planos, menus, entre
otros. Normalmente, un archivo único contendrá todos los los elementos del juego.
Cuando se inicia Unity, lo primero que hace es abrir un Archivo de proyecto. Cada
proyecto contiene uno o mas documentos llamados "Escenas". Una sola escena
contendrá un nivel de juego y elementos principales como una interfaz de usuario.

Los menús de juego, secuencia de "Game over" o escenas importantes También


pueden estar en los propios archivos de escena. Juegos complejos incluso puede usar
escenas enteras solo para fines de inicialización. Así, todos los niveles en un juego
muy probablemente serán escenas, pero no todas las escenas necesariamente será un
nivel de juego. Incluso se pueden hacer niveles con mas de una escena, cargandolas y
descargandolas poco a poco a medida que el jugador avanza, para disminuir la carga
del juego.

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
17

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.

3.2 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.

18

CAPITULO 4: INSTALACION DE UNITY

4.1 DESCARGAR UNITY

Lo primero que tenemos que hacer es buscar en nuestro navegador Unity y


seleccionaremos el enlace que nos permite descargar Unity

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

19

Lo siguiente es instalar el Hub, esta vez la descarga tardara un poco más.

Aceptaremos el acuerdo de licencia y seleccionaremos la ruta de Instalación

Una vez que termine la instalación, dejaremos la casilla marcada y presionaremos el


botón de terminar

20

4.2 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
podremos empezar a descargar el editor, solo damos a ADD y comenzamos la
configuración de instalación.

21

Descargará complementos que le permitan funcionar de manera óptima, una vez


terminado ya estará listo el editor de Unity


22

CAPITULO 5: ENTORNO DE UNITY

5.1 CREANDO UN PROYECTO

Siempre que lance el editor de Unity, se muestra la Pantalla de Inicio. Si no existe


ningún proyecto de Unity en su ordenador, o Unity no sabe dónde se encuentran,
pedirá que se cree un proyecto.

Para comenzar, puede hacer clic en New project lo que le llevará a la vista Crear
Proyecto de la Pantalla de Inicio. Para averiguar más, vea la sección sobre esto en
Creando un Proyecto. Alternativamente, si ya tiene un proyecto Unity en su ordenador,
puede abrirlo desde esta pantalla. Vea Abrir un Proyecto para averiguar más.

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.

En la esquina superior derecha de la Pantalla de Inicio, seleccione ‘Nuevo’ para abrir la


vista Crear Proyecto

23

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.

La vista Crear Proyecto de la Pantalla de Inicio

24

Para crear un nuevo proyecto:

1. El nombre por defecto para New Unity Project pero puede cambiarlo siempre
que quiera. Escriba el nombre con el que quiere llamar a su proyecto en el
campo Project name.

2. La localización por defecto para su carpeta personal en su ordenador, pero


puede cambiarla. BIEN POR (a) Escriba aquí dónde quiere almacenar su
proyecto en su ordenador en el campo Location. O (b) Haga clic en los tres
puntos azules ‘…’. Esto mostrará el Finder de su ordenador (Mac OS X) o el
Explorador de Archivos (Windows).

3. Entonces, en el Finder o en el Explorador de Archivos, seleccione la carpeta de


proyecto en la que quiera guardar su nuevo proyecto, y seleccione “Elegir”.

4. Seleccione 3D o 2D para su tipo de proyecto. Por defecto es 3D, resaltado en


rojo para mostrar que está seleccionado. (La opción 2D hace que el editor de
Unity muestre sus características, y la opción 3D muestra las características 3D.
Si no está seguro de qué elegir, déjelo en 3D; puede cambiar esta configuración
más tarde.)

5. Hay una opción para seleccionar Asset packages… para incluir en su proyecto.
Los paquetes de Assets son contenido pre-elaborado, como imágenes, estilos,
efectos de iluminación y y controles de personaje en juego, entre otras útiles
herramientas de creación del juego y contenidos. Los paquetes de assets
ofrecidos aquí son gratuitos, empaquetados con Unity, y puede usarlos para
comenzar con su proyecto. BIEN PUEDE: si no quiere importar esos assets
empaquetados, o no está seguro, simplemente ignore esta opción; puede añadir
estos assets y muchos otros posteriormente vía el editor de Unity. O: Si no quiere
importar esos assets empaquetados ahora, seleccione Asset packages… para
mostrar la lista de assets disponible, marque los que desee, y haga clic en Done.

6. Ahora seleccione Create project y ¡todo estará listo!

opciones de paquetes de Assets - puede elegir añadirlas ahora o ignorar esta opción y
añadirlas más adelante

25

5.1.1 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.

26

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).

2. 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.)

27

5.2 CONOCIENDO EL MOTRO GRAFICO

Las ventanas más comunes y útiles se muestran en sus posiciones por defecto, abajo:

28

5.2.1 La ventana del Proyecto

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í.

29

5.2.2 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.

30

5.2.3 La ventana de Jerarquía

La ventana de jerarquía es una representación de texto jerárquico de cada objeto en la


escena. Cada elemento en la escena tiene una entrada en la jerarquía, por lo que las
dos ventanas están inherentemente vinculadas. La jerarquía revela la estructura de
cómo los objetos están agrupados el uno al otro.

31

5.2.4 La ventana del Inspector

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.

5.2.5 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.

32

5.3 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.

Algunos de los tipos de Asset que pueden ser importados a Unity

5.4 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.

33

5.4.1 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.

34

5.4.2 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.

35

5.4.3 Cápsula

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.

36

5.4.4 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.

37

5.4.5 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.

38

5.4.6 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.

5.5 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:

39

La estructura básica de archivos de un proyecto de Unity

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.

La Project Window muestra assets que han sido importados a su proyecto

Si usted arrastra un archivo a la Project Window de Unity desde su computador (ej,


desde el Finder on Mac, o el Explore en Windows), este será copiado a su carpeta
Assets, y va a aparecer en al Project Window.

Los items que usted ve en la Project Window representan (en la mayoría de casos)
archivos actuales en su computador, y si usted los borra dentro de Unity, usted está
borrándolos de su computador también.

40

La relación entre la carpeta Assets en su proyecto de Unity en su computador, y la


Project Window dentro de Unity

La imagen de arriba muestra un ejemplo de unos cuantos archivos y carpetas dentro


de la carpeta Assets del proyecto de Unity. Usted puede crear tantas carpetas como
usted quiera y utilizarlas para organizar sus Assets.

Usted se dará cuenta en la imagen de arriba que archivos .meta listados en el sistema
de archivos, pero no son visibles en la Project Window de Unity. Unity crea estos
archivos .meta para cada 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.

5.6 Algunos tipos comunes de Asset


5.6.1 Archivos de Imagen
La mayoría de tipos de archivo de imagen son soportados, tal como BMP, TIF, TGA,
JPG, y PSD. Si usted guarda sus archivos layered de Photoshop (.psd) a su carpeta de
Assets, estos serán importados como imágenes aplanadas. Usted puede averiguar
más acerca de importar imágenes con canales alpha de photoshop, o importando
imágenes como sprites.

5.6.2 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
41

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.

5.6.3 Meshes & Animaciones


Con cualquier software de 3D que estés usando, Unity importará los meshes y
animaciones desde cada archivo.

Su archivo mesh no necesita tener una animación para ser importada. Si usted utiliza
animaciones, usted tiene la decisión de importar todas las animaciones de un solo
archivo, o importarlas en archivos separados, cada una con una animación.

5.6.4 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.

5.6.5 Otros tipos de Asset


En la mayoría de casos, su archivo fuente original nunca es modificado por Unity,
incluso a través dentro de Unity usted puede a menudo escoger entre varias maneras
de comprimir, modificar, o de procesar el asset. El proceso de importación lee su
archivo fuente, y crea una representación lista de para el juego de su asset
internamente, al coincidir con sus ajustes de importación. Si usted modifica los ajustes
de importación para un asset, o hace un cambio al archivo fuente en la carpeta Asset,
esto va a causar que Unity re-importe el asset nuevamente para reflejar los nuevos
cambios.

42

5.7 Import Settings (Ajustes de Importación)


Cada tipo de asset que Unity soporta tiene un conjunto de Import Settings (ajustes de
importación), que afectan cómo el asset aparece o se comporta. Para ver los import
settings de un asset, seleccione el asset en el Project View. Los import settings
para este asset van a aparecer en el Inspector. Las opciones que son mostradas
van a variar dependiendo en el tipo de asset que fue seleccionado.

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.

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.

43

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.

5.8 La ventana Project

En esta vista, puede acceder y gestionar los assets que pertenezcan a su proyecto.

44

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 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.

45

Ubicado en la parte izquierda de la barra de herramientas, el Create menú le permite a


uno agregar nuevos assets y sub-carpetas a la carpeta actual. A su derecha hay un
conjunto de herramientas que le permite a uno buscar el asset en su proyecto.

La ventana del menú proporciona la opción de cambiar a una versión de una columna
de la vista del proyecto, esencialmente solo la estructura de la lista jerarquizada sin la
vista de iconos. El ícono de bloqueo alado del menú le permite “congelar” el contenido
actual del view( ie, que dejen de ser cambiados por acontecimientos en otras partes)
de una manera similar al bloqueo del inspector.

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.

46

Si se escribe más de un término de búsqueda se estrechará la búsqueda, por lo tanto


si se escribe coastal scene va a encontrar assets con ambos “coastal” y “scene” en el
nombre (pe, los términos se asocian con una conjunción Y).

A la derecha de la barra de búsqueda hay tres botones. El primero le permite a uno


filtar aún más los assets encontrados por la búsqueda de acuerdo al tipo.

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.

47

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.

El botón más a la derecha guarda la búsqueda añadiendo un elemento a la sección de


favoritos de la lista de assets.

Buscando en la Asset Store

La búsqueda del Navegador del proyecto también puede aplicarse a los assets
disponibles en la Asset Store de Unity. Si se selecciona Asset Store del menú en la
barra de ruta, se mostrarán todos los elementos gratuitos y de pago de la tienda que
coincidan con su búsqueda. Buscando por tipo y etiqueta (label) funciona de la misma
manera que para un proyecto de Unity. Las palabras de consulta en la búsqueda van a
ser comparadas primero contra el nombre del asset, y luego con el nombre del
paquete (package name), la etiqueta del paquete (package label) y la descripción del
paquete en ese orden (de modo que un elemento cuyo nombre contenga los términos
de búsqueda van a ser mostrado antes que otros con los mismos términos en su
descripción del paquete).

48

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.

5.9 Navegación del Scene View


El Scene View tiene un conjunto de controles de navegación que le ayuda moverse
alrededor rápidamente y efectivamente

Movimiento de Flecha(Arrow Movement)

Usted puede utilizar las Arrow Keys para moverse alrededor de la escena tal como si
estuviera “caminando” a través de ella. Las flechas de arriba y abajo mueven la cámara
hacia delante y hacia atrás en la dirección en la que esté enfrente. Las flechas de
izquierda y derecha mueven la vista hacia los lados. Deje oprimido la tecla Shift con
una flecha para moverse más rápido.

Enfocarse(Focusing)

Si usted selecciona un GameObject en la jerarquia, entonces mueva el mouse sobre la


scene view y presione F, la vista se movera para centrarse en el objeto. Esta
caracteristicas es referida como ‘Frame Selected’ debajo del menu ‘Edit’. Sin embargo,
si usted quisiera bloquear la vista al objeto incluso cuando el objeto se esta moviendo
presione Shift+F, esta caracteristica se refiere como ‘Lock View to Selected’ debajo del
menu ‘Edit’.

49

Moverse,Orbitar y Acercarse (Move,Orbit y Zoom)

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:

Move: haga click y arrastre para mover la cámara


alrededor.

Orbit: Deje oprimido Alt y haga click y arrastre para


orbitar la cámara alrededor del actual punto de pivote. Esta opción no está disponible
en modo 2D ya que la vista es ortográfica.

Zoom: Deje oprimido Alt y haga click y arrastre para


acercarse a la Scene View. En Mac usted tambien puede mantener oprimido Control y
oprima y arrastre mas bien.

Mantener pulsado Shift aumentará la velocidad de movimiento y zoom.

Claves de Acceso Rápido Sin usar la Hand Tool

Para una eficiencia extra, todos de estos controles pueden ser usados
independientemente de la herramienta transform(transform tool) seleccionada. Los
controles más convenientes dependen en qué mouse o track-pad esté usando:

Ratón de
2 Ratón Mac con
Ratón de tres
Action botones solo un botón o
botones
o track- track-pad
pad
Moverse Dejar oprimido Dejar Dejar oprimido Alt-
Alt y haga click oprimido Command y haga
en el medio y Alt-Control click y arrastre.
arrastre. y haga click
y arrastre.
50

*Orbitar( Dejar oprimido Dejar Dejar oprimido Alt y


Orbit) Alt y haga click oprimido haga click para
para arrastrar. Alt y haga arrastrar.
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.
* No disponible en modo 2D.

*
5.10 Modo Flythrough
El modo Flythrough le permite navegar el Scene View volando en primera persona
similar a cómo se navega en muchos juegos.

• Haga click y mantenga pulsado el botón derecho del ratón.

• Ahora puede mover la vista usando el mouse, y usar las teclas WASD para
mover izquierda/derecha adelante/atrás y las teclas Q y E para mover arriba y
abajo.

• Mantener oprimido Shift hará que se mueva más rápido.

El modo Flythrough es diseñado para Perspective Mode. En__Isometric Mode__,


dejando oprimido el botón derecho del mouse, y mover el mouse va a orbitar la
cámara.

Tenga en cuenta que en 2D mode, el modo flythrough no está disponible. Dejando


oprimido el botón derecho del mouse mientras mueva el mouse, le permite a usted
desplazarse por el Scene View.

Scene Gizmo

En la esquina superior derecha del Scene View está el Scene Gizmo. Esto muestra la
orientación de la cámara del Scene View, y le permite modificar rápidamente el ángulo
de visión.

51

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.

Una escena mostrada en el modo perspective (izquierdo) y orthographic (derecho)

La misma escena vista en una vista de encima y frontal, en modo orthographic

(Escena encima del BITGEM)

Si usted lograr llevar su scene view a un estado raro (al revés, o un ángulo que
simplemente encuentra confuso!) usted puede siempre usar shift-click en el cubo al
centro del Scene Gizmo para lograr una vista de perspectiva con un ángulo que esté
mirando la escena del lado y un poco desde arriba.

Tenga en cuenta que en 2D mode, el Scene Gizmo no va a ser mostrado ya que la


única opción es tener la vista mirando perpendicularmente en el plano XY.

Gestos del Trackpad de Mac

En un Mac con un trackpad, usted puede arrastrar con dos dedos para acercar la
vista.

Usted también puede usar tres dedos para simular el efecto de hacer click en los
brazos del Scene Gizmo: arrastre arriba, izquierda, derecha o abajo para ajustar la
cámara del Scene View a la dirección correspondiente. En OS X 10.7 “Lion” puede que
tenga que cambiar los ajustes de su trackpad para poder habilitar esta función:

• Abrir System Preferences y luego Trackpad (o escribir trackpad al Spotlight).

• Hacer click en la opción de “More Gestures”.

52

• Hacer click en la primera opción etiquetada “Swipe between pages” y luego o


configurarlo para “Swipe left or right with three fingers” o “Swipe with two or
three fingers”.

5.11 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)

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
53

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.

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.

Gizmo Display Toggles

Para la Posición:

• Center posicionará el Gizmo en el centro de los limites dictados del objeto.

• Pivot posicionará el Gizmo en el punto de pivote actual de un Mesh.

Para la Rotación:

• Local mantendrá la rotación del Gizmo relativamente a la del objeto.

• Global sujetará el Gizmo a la orientación espacial del mundo.

Snapping por Unidades

Al arrastrar cualquier eje del Gizmo usando la herramienta de traslación(Translate Tool),


usted puede mantener oprimida la tecla Control (Command en Mac) para snap en
incrementos definidos en las Snap Settings.

Usted puede cambiar la distancia de la unidad que está siendo usada en unit snapping
usando el menú Edit->Snap Settings…

Los ajustes del snapping por unidad de la scene view.

54

5.12 Snapping de superficies


Mientras arrastrar en el centro usando la herramienta de traslación(Translate Tool),
usted puede mantener oprimido Shift y Control (Command en Mac) para snap el objeto
en la intersección de cualquier Collider. Esto crea un posicionamiento preciso de
objetos increíblemente rápidos.

5.13 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.

5.14 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 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.

55

5.15 La Vista del Juego (Game View)

El Game View es renderizado por la cámara(s) en su juego. Es la representación de su


juego ya finalizado. Necesitará utilizar una o más Cameras (Cámaras) para controlar lo
que el jugador ve realmente cuando esté jugando su juego. Para más información
acerca de Cámaras, por favor mirar la página del componente Camera.

Modo de Juego ( Play Mode)

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

56

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.
Aspect Selecciona valores diferentes para probar cómo su
juego se verá en monitores con diferentes relaciones
de aspecto. Este es configurado a “Free Aspect” por
defecto.
Scale slider Esto le permite a usted acercarse y examinar áreas de
la pantalla del juego con más detalla, o se puede alejar
para ver la pantalla completa dónde la resolución de la
pantalla sea mayor que el tamaño de la ventana de la
vista del juego. usted también puede utilizar la scroll
wheel (rueda de desplazamiento) y el botón de la mitad
del mouse para hacer esto mientras el juego está
parado o pausado.
Maximize Habilite esto para que la vista del juego se maximice a
on Play 100% de su ventana del Editor para una pre-
visualización de pantalla completa cuando ingrese al
Play Mode (modo de juego).
Mute audio Habilite esto para mute cualquier audio dentro del
juego cuando ingrese al modo de juego.
Stats Oprima esto para toggle (activar/desactivar) la ventana
superpuesta de Statistics (estadísticas), que contienen
estadísticas de renderizado del audio y gráficas de su
juego mientras usted está en el modo de juego.
Gizmos Oprima esto para toggle (activar/desactivar) la
visibilidad de Gizmos. Para solamente ver ciertos tipos
de Gizmo durante el modo de juego, oprima la flecha
desplegable alado de la palabra “Gizmos” y solamente
revise las casillas de los tipos de Gizmo que quiere ver.
57

Menú emergente de Gizmos

Junto al nombre de cada componente están los ajustes para el icono y los gizmos
asociado a él. El ajuste del Icono revela otro menú emergente que le permite a uno
escoger entre una selección de iconos predefinidos o un icono personalizado definido
por una textura.

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.

58

5.16 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.

5.17 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.

59

Una nueva escena vacía, con los objetos 3D predeterminados - una cámara y una
directional light.

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.

5.17.1 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.

Algunos assets de escena, guardados y visibles en el project view

5.17.2 Abriendo Escenas


Para abrir una escena, con el fin de comenzar o continuar trabajando dentro de esa
escena, haga doble click en el asset de la escena en la ventana del proyecto.

Si su escena actual contiene cambios sin guardar, a usted se le pedirá guardar o


descartar los cambios.

60

5.18 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?

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.

5.19 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.

Por ejemplo, un objeto Light se crea adjuntando un componente Light a un


GameObject.

61

Un simple GameObject con varios componentes

Un objeto de cubo sólido tiene un componente de filtro de malla y un representador de


malla para dibujar la superficie del cubo, y un componente de colisionador de caja
para representar el volumen sólido del objeto en términos de física.

Un simple GameObject con varios componentes

Detalles

Un GameObject siempre tiene el componente Transform adjunto (para representar la


posición y orientación) y no es posible quitar esto. Los otros componentes que le dan
al objeto su funcionalidad pueden ser agregados del menú Component del editor o
desde un script. También hay muchos objetos útiles pre-construidos (figuras primitivas,
cámaras, etc) disponibles en el menú GameObject > 3D Object , ver Primitive
Objects.

5.20 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
62

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.

La cámara principal, agregada a cada escena por defecto

Mirando la Cámara Principal del GameObject, se puede ver que contiene una
colección diferente de Components. Especialmente, un Camera Component, a
GUILayer, un Flare Layer, y un Audio Listener. Todos estos Components proporcionan
funciones adicionales al GameObject. Sin estas, no habría nada representando los
gráficos del juego para la persona que está jugando! Rigidbodies, Colliders, Particles, y
Audio son todos diferentes Components (o combinaciones de Components) que
pueden ser agregados a cualquier GameObject.

5.21 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
63

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.

Incluso los GameObjects vacíos tienen un componente Transform

Recuerde que siempre puede utilizar el Inspector para ver qué Components son
adjuntados al GameObject seleccionado. A medida que los Components son
agregados y quitados, el Inspector va a siempre mostrar cuáles están actualmente
adjuntos. Usted va a utilizar el Inspector para cambiar todas las propiedades de
cualquier Component (incluyendo scripts).

5.22 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.)

Un GameObject vacío con un componente Rigidbody adjunto

Otra opción es usar el Component Browser, que puede ser activado con el botón Add
Component en el inspector del objeto.

64

5.22.1 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.

5.23 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.

65

66

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).

67

68

Ahora un archivo de efecto de sonido es referenciado en la propiedad Audio Clip

Los componentes pueden incluir referencias a cualquier otro tipo de Componente,


GameObject, o Assets. Usted puede leer más acerca de cómo asignar referencias en
la página acerca de editar propiedades.

Las propiedades restantes en el Audio Clip son todas propiedades con valor. Estas
pueden ser ajustadas directamente desde el Inspector. Las propiedades de valor del
Audio Clip son todas palancas, valores numéricos, campos desplegables, pero las
propiedades con valor también pueden ser strings de texto, colores, curvas, y otros
tipos. Puede leer más acerca de estos y sobre editar propiedades de valor en la página
acerca de editing value properties](EditingValueProperties.html).

Los comandos del menú de contexto del Component

El menú de contexto del Component tiene un número de comandos útiles.

5.24 El Component Context Menu


Los mismos comandos también están disponibles desde el icono de “engranaje” en la
parte extrema superior derecha del panel del Component en el Inspector.

Reset

Este comando restablece los valores que tenían las propiedades del component antes
de la más reciente sesión de edición.

5.25 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.

5.26 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.

5.27 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.

69

5.28 Probando las Propiedades


Mientras su juego esté en Play Mode, usted es libre de cambiar las propiedades en
Inspector de cualquier GameObject. Por ejemplo, puede querer experimentar con
diferentes alturas de salto. Si crea una propiedad Jump Height en el script, puede
entrar en Play Mode, cambiar el valor, y oprimir el botón de salto para ver qué pasa.
Luego, sin salirse de Play Mode puede cambiarlas nuevamente y ver los resultados en
segundos. Cuando se salga de Play Mode, sus propiedades se van a revertir a sus
valores pre-Play Mode, para que no se pierda nada de trabajo. Este flujo de trabajo le
da un poder increíble con el cual experimentar, ajustar, y refinar su juego sin la
necesidad de invertir mucho tiempo en ciclos de iteración.

5.29 Transform
El componente Transform determina la Position, Rotation, y Scale de cada objeto en la
escena. Cada GameObject tiene un Transform.

5.29.1Propiedades
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.

5.30 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.

70

5.30.1 Guardar cambios de la escena actual (“Save Scene”)

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 .

71

5.30.2 Guardar cambios a todo el proyecto (“Save Project”)

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”.

72

5.31 El menú Project Settings (Configuración de Proyecto)


Los cambios a estas configuraciones se guardan en la carpeta Library al salvar el
proyecto:

• Input: se guarda como ´InputManager.asset´

• Tags Y Capas: se guarda como ´TagManager.asset´

• Audio: se guarda como ´AudioManager.asset´

• Time: se guarda como ´TimeManager.asset´

• Player: se guarda como ´ProjectSettings.asset´

• Physics: se guarda como ´DynamicsManager.asset´

• Physics 2D: se guarda como ´Physics2DSettings.asset´

• Quality: se guarda como ´QualitySettings.asset´

• Graphics: se guarda como ´GraphicsSettings.asset´

• Network: se guarda como ´NetworkManager.asset´

• Editor: se guarda como ´EditorUserSettings.asset´

73

Los “Build Settings” (Configuración del build)

La configuración del build también se guarda en la carpeta Library como


´EditorBuildSettings.asset´.

La Configuración del Build se guarda al hacer “Save Project”

74

5.32 Cambios a los assets en la Project Window (ventana de


proyecto)
Junto con la configuración de todo el proyecto también se guardan los cambios a
assets que no tiene un botón “apply” (aplicar), por ejemplo cambios a cualquiera de
los siguientes:

• Parámetros materiales

• Prefabs

• Controladores de Animación (Animator Controllers) (máquinas de estado)

• Máscaras de Avatar (Masks)

• Cualquier otro cambio a un asset que no tenga el botón “apply”

5.33 Cambios que se escriben inmediatamente al disco (no


necesitan ser guardados)
Hay algunos tipos de cambios que se escriben inmediatamente en el disco sin ninguna
necesidad de hacer una acción “Save”. Algunos de estos cambios son:

Cambios a cualquier configuración de importación que requiera que el usuario pulse


un botón “apply”

La configuración de importación para la mayoría de los tipos de assets requiere que se


pulse un botón “Apply” para que los cambios tengan efecto. Esto hace que el asset se
re-importe de acuerdo a la nueva configuración. Estos cambios se guardan
inmediatamente al pulsar el botón Apply. Por ejemplo:

• Cambiar el tipo de textura para un asset de imagen

• Cambiar el factor de escala par un asset de un modelo 3D

• Cambiar la configuración de compresión de un asset de audio

• Cualquier otro cambio en la configuración de importación que tenga un botón


“apply”

5.34 Otros cambios que se guardan inmediatamente


Alguno otros tipos de datos se guardan a disco inmediatamente o automáticamente
sin necesidad de hacer una acción “Save”:

• La creación de nuevos assets, p.e: materiales nuevos o prefabs (Pero no los


cambios subsecuentes a esos assets)

• Datos de iluminación horneados (baked) (se guardan al completar el proceso de


horneado (bake))

• Datos de navegación horneados (baked) (se guardan al completar el proceso de


horneado (bake))

• Baked occlusion culling data (saved when the bake completes)

• Cambios en el orden de ejecución del script (después de pulsar “apply”, este


dato se guarda en cada archivo .meta del script).

75

5.35 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.

Una configuración de dos luces simple

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.

76

Propiedades del Light Component en el Inspector

Simplemente cambiando el Color de una luz, puede darle un cambio completamente


diferente al estado de ánimo de la escena.

77

Luces brillantes de sol

Luces oscuras medievales

Luces de noche de miedo

78

5.36 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.

5.37 Creando y usando scripts


El comportamiento de los GameObjects es controlado por los Components que están
adjuntos. Aunque los Componentes integrados de Unity pueden ser muy
versátiles,usted va a ver que va a necesitar ir más allá de lo que estos pueden
proporcionar para implementar las características propias de su juego. Unity le permite
a usted crear su propio Componente utilizando scripts. Estos le permite a usted trigger
(activar/desactivar) eventos de su juego, modificar propiedades del Componente en el
tiempo y responder al input del usuario de la forma que usted quiera.

Unity soporta dos lenguajes nativamente:

• C# (pronunciado C-sharp), un lenguaje estándar de la industria similar a Java o


C++;

• UnityScript, un lenguaje diseñado específicamente para uso con Unity y


modelado tras JavaScript;

Adicional a estos, otros lenguajes .NET pueden ser utilizados con Unity si estos
compilan un DLL compatible - ver aquí para más detalles.

Aprender el arte de programar y el uso de estos lenguajes en particular, va más allá del
alcance de esta introducción. Sin embargo, hay muchos libros, tutoriales y otros
recursos para aprender cómo a programar con Unity. Vea la Learning section de
nuestra página web para más detalles.

5.37.1 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.

79

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.

5.37.2 Anatomia de un archivo Script.


Cuando usted hace doble click en un asset tipo script en Unity, éste se abrirá en el
editor de texto. Por defecto, Unity va a utilizar MonoDevelop, pero puede seleccionar
cualquier editor que a usted le guste desde el panel Externa Tools en las preferencias
de Unity.

Los contenidos iniciales del archivo se verán algo como esto:

using UnityEngine;

using System.Collections;

public class MainPlayer : MonoBehaviour {

// Use this for initialization


void Start () {

// Update is called once per frame


void Update () {

}
}

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
80

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, é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.

5.38 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:

81

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:-

// Use this for initialization


void Start () {
Debug.Log("I am alive!");
}

Debug.Log es un simple comando que imprime un mensaje al output de consola de


Unity. Si usted presiona Play ahorita, usted debería ver el mensaje en la parte inferior
de la ventana principal del editor de Unity y en la ventana de la consola (menu:
Window > Console).

5.39 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.

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 System.Collections;

public class MainPlayer : MonoBehaviour {


public string myName;

// Use this for initialization


void Start () {
Debug.Log("I am alive and my name is " + myName);
}

// Update is called once per frame


void Update () {

}
}

Este código crea un campo editable en el Inspector llamado “My Name”.

82

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

private var invisibleVar: int;

function Start () {

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.

5.40 Controlando GameObjects utilizando


Componentes
En el editor de Unity, usted hace cambios a las propiedades del Componente
utilizando el Inspector. Entonces, por ejemplo, los cambios a los valores de posición
del Componente Transform resultarán en un cambio en la posición del GameObject.
83

Similarmente, usted puede cambiar el color del material del Renderer o la masa del
Rigidbody con un efecto correspondiente en la apariencia o comportamiento del
GameObject. Para la mayoría de veces, scripting también modifica las propiedades del
Componente para manipular GameObjects. La diferencia, en cambio, es que un script
puede variar un valor de una propiedad gradualmente en el tiempo o en respuesta al
input del usuario. Al cambiar, crear y destruir objetos en el momento indicado,
cualquier tipo de gameplay puede ser aplicado.

5.41 Accediendo Componentes


El caso más simple y común es dónde un script necesita acceder otros Componentes
adjuntados al mismo GameObject. Como es mencionado en la sección de
Introducción, un Componente es una instancia de una clase por lo que el primer paso
es coger una referencia a la instancia del Componente con el cual usted quiere
trabajar. Esto se hace con la función GetComponent. Típicamente, usted quiere
asignarle al objeto Componente a una variable la cual está hecha en C# utilizando la
siguiente sintaxis:

void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
}

En UnityScript, la sintaxis es un poco diferente:

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>();

// Change the mass of the object's Rigidbody.


rb.mass = 10f;
}

Una característica extra que no está disponible en el Inspector es la posibilidad de


llamar funciones o instancias de Componente:

void Start () {
Rigidbody rb = GetComponent<Rigidbody>();
// Add a force to the Rigidbody.
rb.AddForce(Vector3.up * 10f);
84

}
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.

5.42Accediendo Otros Objetos


Aunque a veces operan en aislamiento, es común para script de mantener registro de
otros objetos. Por ejemplo, un enemigo que está persiguiendo podría necesitar saber
la posición del jugador. Unity proporciona un número de diferente formas de recuperar
otros objetos, cada una apropiada a ciertas situaciones.

Enlazando Objetos con Variables

La manera más directa de encontrar un GameObject relacionado es agregar una


variable public GameObject a un script:

public class Enemy : MonoBehaviour {


public GameObject player;

// Other variables and functions...


}

Esta variable estará visible en el Inspector como cualquier otra:

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:

public class Enemy : MonoBehaviour {


public GameObject player;

void Start() {
// Start the enemy ten units behind the player character.
transform.position = player.transform.position - Vector3.forward * 10f;
}
}
85

Adicionalmente, si una variable public es declarada de un tipo de Componente en su


script, usted puede arrastrar cualquier GameObject que tiene un Componente adjunto.
Esto va a acceder el componente directamente en vez del GameObject en sí mismo.

5.43 public Transform playerTransform;


Enlazar objetos juntos con variables es de gran ayuda cuando usted está tratando con
objetos individuales que tienen conexiones permanentes. Usted puede utilizar una
variable array para enlazar varios objetos del mismo tipo, pero la conexión debe
todavía estar hecha en el editor de Unity en vez que sea en el tiempo de ejecución. A
veces es más conveniente ubicar objetos en el tiempo de ejecución y Unity
proporciona dos maneras básicas para hacer esto, como es descrito abajo.

5.44 Encontrando Child Objects (Objetos Hijos)


A veces, una escena de juego hará uso de un número de objetos del mismo tipo, como
lo son los enemigos, puntos de interés, y obstáculos. Estos pueden necesitar ser
rastreados por un script en particular que supervise o reaccione a estos (eg, todos los
puntos de interés pueden necesitar estar disponible para un script pathfinding). Utilizar
variables para vincular estos objetos es una posibilidad pero eso hará que el proceso
de diseño sea tedioso si cada nuevo punto de interés tiene que ser arrastrado a una
variable en una script. Del mismo modo, si un punto de interés es eliminado entonces
es una molestia tener que quitar la variable que referencia al objeto que falta. En casos
como estos, a veces es mejor manejar el conjunto de objetos al hacerlos todos hijos
de un objeto padre. Los objetos hijos pueden recuperarse utilizando el Componente
del Transform del padre ( ya que todos los GameObjects implicitamente tienen un
Transform):

using UnityEngine;

public class WaypointManager : MonoBehaviour {


public Transform[] waypoints;

void Start() {
waypoints = new Transform[transform.childCount];
int i = 0;

foreach (Transform t in transform) {


waypoints[i++] = t;
}
}
}
86

Usted también puede ubicar un objeto hijo especifico por el nombre utilizando la
función Transform.Find :

transform.Find("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.

5.45 Encontrando Objetos por Name (nombre) o Tag


(Etiqueta)
Siempre es posible ubicar GameObjects dónde sea en la Jerarquía de la escena
mientras usted tenga alguna información para identificarlos. Objetos individuales
pueden ser recuperados por nombre utilizando la función GameObject.Find.

GameObject player;

void Start() {
player = GameObject.Find("MainHeroCharacter");
}

Un objeto o una colección de objetos también pueden ser ubicadas por su tag
( e t i q u e t a ) u t i l i z a n d o l a s f u n c i o n e s G a m e O b j e c t . F i n d W i t h Ta g y
GameObject.FindGameObjectsWithTag .

GameObject player;
GameObject[] enemies;

void Start() {
player = GameObject.FindWithTag("Player");
enemies = GameObject.FindGameObjectsWithTag("Enemy");
}
87

CAPITULO 6: EXPORTACION DE PROYECTOS

6.1 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.

6.2 Entrada
El ejemplo más obvio del comportamiento distinto entre plataformas es en los
métodos de entrada ofrecidos por el hardware.

6.3 Teclado y joypad


La función Input.GetAxis 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:-

// Returns values in the range -1.0 .. +1.0 (== left .. right).


function Steering() {
return Input.GetAxis("Horizontal");
}

// Returns values in the range -1.0 .. +1.0 (== accel .. brake).


function Acceleration() {
return Input.GetAxis("Vertical");
}

var currentGear: int;

// Returns an integer corresponding to the selected gear.


88

function Gears() {
if (Input.GetKeyDown("p"))
currentGear++;
else if (Input.GetKeyDown("l"))
currentGear--;

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.

6.4 Toques y Clics


Las funciones Input.GetMouseButtonXXX 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 Input.mousePosition 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.

89

6.5 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 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.

6.6 Memoria, almacenamiento y desempeño de CPU


Los dispositivos móviles inevitablemente tienen menos almacenamiento, memoria y
potencia disponible de CPU que las máquinas de escritorio, y por consiguiente un
juego puede ser difícil de portar sólo por el hecho de que su desempeño no sea
aceptable en hardware poco potente. Algunos problemas de recursos pueden ser
manejados pero si estás empujando los límites del hardware en un ambiente de
escritorio, es probable que tu juego no sea un buen candidato para ser portado a una
plataforma móvil.

6.7 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.

90

6.8 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.

6.9 Gestión automática de memoria


La recuperación de la memoria no usada a partir de los objetos “muertos” es
manejada automáticamente por Unity, y se efectúa con frecuencia y de forma
imperceptible en las máquinas de escritorio. No obstante, las bajas prestaciones en
memoria y potencia de CPU en los 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.

6.10 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.

6.11 Publicando Construcciones (Publishing Builds)


En cualquier momento mientras está creando su juego, usted podría querer ver qué
aspecto tendrá cuando se construya y se ejecute fuera del editor de modo
independiente (standalone) o con un reproductor web. Esta sección va a explicar cómo
acceder a las Build Settings y cómo crear distintas construcciones de sus juegos.

File->Build Settings… es el elemento del menú para acceder a la ventana de Build


Settings. Aparece una lista editable de las escenas que serán incluidas cuando
construya su juego.

91

La ventana de los Build Settings

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
92

juego. Cuando quiera cargar una escena nueva, use Application.LoadLevel() dentro de
sus scripts.

Si ha agregado más de un archivo de escena y quiere reorganizarlos, simplemente


haga click y arrastre las escenas en la lista por encima o por debajo de las demás
hasta que tenga en orden deseado.

Si quiere eliminar una escena de la lista, haga click para subrayar la escena y oprima
Command-Delete. La escena va a desaparecerse de la lista y no va a ser incluida en la
construcción.

Cuando esté listo de publicar lo que ha construido, seleccione una Platform y esté
seguro que el logo de Unity esté alado de la plataforma; si no está entonces haga click
en el botón Switch Platform para dejar que Unity sepa para qué plataforma quiere
construirla. Finalmente oprima el botón Build . Ahí va a poder seleccionar el nombre y
la ubicación del juego usando un dialogo estándar para guardar. Cuando haga click en
Save, Unity construirá su juego pronto. Es así de sencillo. Si está inseguro de dónde
guardar su juego construido, considere guardarlo en la carpeta raíz de su proyecto. No
puede guardar la construcción en la carpeta de Assets.

Habilitando la casilla de verificación del Development Build en el reproductor va a


permitir la funcionalidad Profiler y también hacer que las opciones Autoconnect Profiler
y Script Debugging estén disponibles.

Información adicional acerca de la ventana de los Build Settings puede encontrarse en


la página Build Settings.

6.12 Construyendo reproductores independientes (Building


standalone players)
Con Unity puede construir aplicaciones standalone para Windows, Mac o Linux. Es
simplemente una cuestión de elegir el destino de la construcción que quiere hacer en
el dialogo de las build settings, y oprimir el botón ‘Build’. Cuando se construya
reproductores independientes (standalone), los archivos de resultado van a variar
dependiendo del destino en el que quiere construir. En Windows, un archivo ejecutable
(.exe) será construido, junto con una carpeta de Data (datos) que contendrá todos los
recursos de su aplicación. En mac, un paquete de aplicación será construido,
conteniendo el archivo se necesita para ejecutar la aplicación, así como los recursos.

Distribuir su standlone en Mac es solo proporcionar el paquete de la aplicación (todo


está empaquetado ahí). En Windows se necesita proporcionar tanto el archivo .exe,
como la carpeta de datos para que otros la ejecuten. Piénselo de esta manera: Otras
personas deben tener los mismos archivos en su computador, como los archivos
resultantes que Unity construyo para usted, para poder ejecutar su juego.

Dentro del proceso de construcción

El proceso de construcción colocará una copia en blanco de la aplicación de juego


construida en dónde uno especifique. Luego se trabajará a través de la lista de
escenas en las build settings, abrirlas en el editor una por una, optimizarlas, e
integrarlas al paquete de aplicación. También va a calcular todos los assets requeridos
por las escenas incluidas y almacenar los datos en un archivo separado dentro del
paquete de aplicación.

93

• Cualquier GameObject en una escena que esté etiquetado con ‘EditorOnly’ no


va a ser incluido en la construcción publicada. Esto es útil para depurar scripts
que no necesitan ser incluidas al final del juego.

• Cuando un nuevo nivel cargue, todos los objetos del nivel anterior son
destruidos. Para prevenir esto, use DontDestroyOnLoad() en cualquier objeto que
no quiera que sea destruido. Esto es comúnmente usado para mantener música
reproduciendo mientras se 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.

6.13 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 Application.LoadLevel(1). En las build settings haga que el indice de
esta escena sea 0. Todos los niveles posteriores serán precargados.

94

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 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 https://
docs.unity3d.com/es/530/Manual/UnityManual.html

UNITY. (s. f.). Recuperado 30 de abril de 2020, de https://unity.com/es

M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de
2020, de https://www.masterd.es/blog/que-es-unity-3d-tutorial/

M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de
2020, de https://www.masterd.es/blog/que-es-unity-3d-tutorial/

También podría gustarte