100% encontró este documento útil (1 voto)
36 vistas87 páginas

Historia y Uso del Motor Unity

Este documento describe la herramienta Unity, un motor gráfico para el desarrollo de videojuegos. Explica brevemente la historia de Unity y otros motores gráficos importantes. Luego, detalla cómo instalar Unity y utilizar su entorno de desarrollo, incluida la creación de proyectos, la importación y organización de assets, y el uso de scripts y componentes. Finalmente, cubre consideraciones para la exportación de proyectos a diferentes plataformas.

Cargado por

Eliseo Orozco
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
36 vistas87 páginas

Historia y Uso del Motor Unity

Este documento describe la herramienta Unity, un motor gráfico para el desarrollo de videojuegos. Explica brevemente la historia de Unity y otros motores gráficos importantes. Luego, detalla cómo instalar Unity y utilizar su entorno de desarrollo, incluida la creación de proyectos, la importación y organización de assets, y el uso de scripts y componentes. Finalmente, cubre consideraciones para la exportación de proyectos a diferentes plataformas.

Cargado por

Eliseo Orozco
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1

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 6
ANTECEDENTES 6
PROBLEMATICA 6
JUSTIFICACION 7
LIMITACIONES 7
Objetivo General 7
Objetivos específicos 8
AGRADECIMIENTOS 8
CAPITULO 1: HERRAMIENTAS GRAFICAS PARA DESARROLLAR UN
VIDEOJUEGO 9
¿QUE ES UN MOTOR GRAFICO? 9
TIPOS DE MOTORES GRAFICOS DE LA HISTORIA 9
Doom 9
Build 9
Quake 10
RenderWare 10
Quake II 10
GoldSRC 10
Unreal 11
Quake III 11
Unreal II 11
Source 11
CryEngine 12
Unreal 3 12
Euphoria 12
Dunia 12
CAPITULO 2: UNITY 13
3

¿QUE ES UNITY? 13
HISTORIA DE UNITY 14
CAPITULO 3: INSTALACION DE UNITY 16
DESCARGAR UNITY 16
CONFIGURANDO LAUNCHER 18
CAPITULO 4: ENTORNO DE UNITY 20
CREANDO UN PROYECTO 20
CONOCIENDO EL MOTRO GRAFICO 24
La ventana del Proyecto 25
La Scene View (vista de escena) 26
La ventana de Jerarquía 27
La ventana del Inspector 28
La barra de herramientas 28
ASSETS 29
Objetos Primitivos 29
Cubo 30
Esfera 31
Cápsula 32
Cilindro 33
Plano 34
Quad 35
Importando Assets 35
Algunos tipos comunes de Asset 37
Archivos de Imagen 37
Archivos de modelos 3D 37
Meshes & Animaciones 38
Archivos de Audio 38
Otros tipos de Asset 38
Import Settings (Ajustes de Importación) 39
La ventana Project 40
4

Navegación del Scene View 45


Modo Flythrough 47
Posicionando GameObjects 49
Snapping de superficies 51
Look-At Rotation 51
Vertex Snapping 51
La Vista del Juego (Game View) 52
Creación de Juego 55
Escena 55
Guardando Escenas 56
GameObjects 57
GameObject 57
El Transform Component 58
Usando Components 59
Agregando Components 60
El Component Browser 61
Editando Components 61
El Component Context Menu 65
Eliminar(Remove) 65
Moverse Arriba/Abajo 65
Copiar/Pegar 65
Probando las Propiedades 66
Transform 66
Propiedades 66
Guardando Su Trabajo 66
Guardar cambios de la escena actual (“Save Scene”) 67
Guardar cambios a todo el proyecto (“Save Project”) 68
El menú Project Settings (Configuración de Proyecto) 69
Cambios a los assets en la Project Window (ventana de proyecto) 71
Cambios que se escriben inmediatamente al disco (no necesitan ser guardados) 71
Otros cambios que se guardan inmediatamente 71
5

Luces (Lights) 72
Rendering paths 75
Creando y usando scripts 75
Creando Scripts 75
Anatomia de un archivo Script. 76
Controlando un GameObject 77
Variables y el Inspector 78
Controlando GameObjects utilizando Componentes 79
Accediendo Componentes 80
Accediendo Otros Objetos 81
public Transform playerTransform; 82
Encontrando Child Objects (Objetos Hijos) 82
Encontrando Objetos por Name (nombre) o Tag (Etiqueta) 83
CAPITULO 5: EXPORTACION DE PROYECTOS 84
Consideraciones Multi-plataforma 84
Entrada 84
Teclado y joypad 84
Toques y Clics 85
Acelerómetro, brújula, giroscopio y GPS 86
Memoria, almacenamiento y desempeño de CPU 86
Reproducción de películas 86
Requerimientos de almacenamiento 87
Gestión automática de memoria 87
Potencia de la CPU 87
Publicando Construcciones (Publishing Builds) 87
Construyendo reproductores independientes (Building standalone players) 89
Precarga 90
CONCLUSION 91
FUENTES CONSULTADAS 91
6

INTRODUCCION
Los videojuegos son una industria creciente que en los últimos años a tenido un gran auge en la
sociedad, esto debido en gran manera al aumento en el uso de la tecnología, lo cual se ha
convertido en algo más cotidiano. Además, los videojuegos se han visto en la necesidad de
aumentar sus requerimientos mínimos para poder permanecer en el mercado actual, lo cual hace
que se necesiten herramientas más poderosas para su realización.
En vista de lo anterior, los desarrolladores actuales necesitan buscar un software que se facilite el
desarrollo de los videojuegos en gran manera, y una de ellas es de la que vamos a hablar en este
documento: Unity.
Unity es un software especializado en el desarrollo de videojuegos. Este software es capaz de
desarrollar videojuegos que bien pueden ser pesados en cuanto a requisitos, o bastante óptimos
para los equipos y consolas de generaciones pasadas.
Una de sus ventajas es que para usarse en un PC no se necesita que sean tan poderosos, además
de que maneja un entorno gráfico amigable que facilita su uso y comprensión.

ANTECEDENTES
Antes del nacimiento de Unity , existieron diversos motores gráficos para el desarrollo de los
videojuegos, algunos fueron:
Doom, Bullid, Quake, RenderWare, Quake II, GoldSRC, Unreal, Quake III, Unreal II, Source,
CryEngine, Unreal 3, Euphoria, Dunia, entre otros.

PROBLEMATICA
Actualmente vivimos una época dónde buscamos nuevas maneras de entretenimiento, pues a
pesar de contar con un sin fin de diversiones y pasatiempos, algunas veces queremos regresar a
esas actividades que realizamos cuando éramos niños, y si bien ahora no se ve tan aceptable ver a
un grupo de adultos jugar en las calles, tenemos una alternativa que nos une con nuestros amigos
y; gracias a los avances tecnológicos actuales con miles de personas alrededor del mundo: los
videojuegos. Si bien hay gente que los catálogos con un problema, lo cierto es que cuando se
saben llevar son una forma de entretenimiento muy sana, pues nos permite convivir con amigos y
familiares ya sea de forma local o cuando están lejos de nosotros. Y ese es el enfoque que nos
llevó a seleccionar este tema, el ayudar al sano entretenimiento de las personas de cualquier
edad.

JUSTIFICACION
7

Nosotros elegimos el desarrollo de videojuegos en Unity debido a que es una herramienta muy
práctica para el desarrollo de videojuegos, además de que es una de las más usadas en la
actualidad por las grandes industrias desarrolladoras de software. Además, es una herramienta
que conocemos un poco debido a los talleres implementados en el Tecnológico Nacional de
México campus La Piedad.
Otros de los factores que influenciaron en nuestra decisión fue que los videojuegos son un tema
recurrente en nuestra vida, ya sea por alguna conversación o por la afición a jugar. El desarrollo
de videojuegos fue algo que vino después del gusto, y que creo debido a la carrera que estamos
estudiando, lo cual nos facilita entender todo el trasfondo detrás de un videojuego.

LIMITACIONES
Uno de los problemas principales en el desarrollo de videojuegos, es el no contar con el equipo
adecuado para su desarrollo, tanto con todas las herramientas de Software, como una
computadora capaz de correr el desarrollador.

Otro problema es el no contar con la licencia de uso, ya sea para desarrollar, o para exportar a un
dispositivo.

Un problema fuerte es el no verificar los errores que tiene un juego, tanto en los escenarios,
como en los personajes

Objetivo General
Desarrollar en la plataforma Unity un videojuego que este casi listo para su distribución oficial, y
que sea compatible con las principales plataformas de videojuegos actuales.

Objetivos específicos
➢ Mejorar el uso de que tenemos actual de la plataforma Unity
➢ Desarrollar un videojuego
➢ Elaborar la documentación necesaria para tener un producto rentable
8

AGRADECIMIENTOS
Agradecemos a nuestros compañeros por apoyarnos cuando nos hacía falta, y nuestros profesores
por alentar en nosotros el deseo de investigar y nutrir nuestros conocimientos.
Y además a quienes son ser profesores del Tecnológico nos brindan información para despertar
en nosotros los diferentes intereses que hicieron posibles está investigación.
9

CAPITULO 1: HERRAMIENTAS GRAFICAS PARA


DESARROLLAR UN VIDEOJUEGO
¿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.

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:

Doom
El legendario juego de la empresa Id Software, es considerado un desarrollo basado en un motor
3D, sin embargo no era más que 2D basado en sprites que representaban objetos, personajes y
cualquier otro elemento que tuviese movimiento. Por ese motivo, las habitaciones estaban en el
mismo plano (no se podía ir al sótano ni a la azotea); y debido al uso de sprites 2D emulando
entornos en tres dimensiones, fue un motor rápido capaz de correr en equipos 386 con tarjetas
VGA estándar para la época (1993). Este motor que llevó el mismo nombre que el juego para el
cual se desarrolló, cobró tanto éxito que también se usó para otros títulos, como Heretic, HeXen
y Doom II, entre otros.

Build
Ya para 1994 las exigencias de los usuarios en materia gráfica era mayor que el año anterior. Fue
entonces cuando nació este motor un tanto similar a Doom, pero con ciertas ventajas como la
posibilidad de mirar hacia arriba o abajo, dando una mayor sensación tridimensional. Fue
utilizado inicialmente en juegos como Duke Nukem 3D y Blood; pero debido a su éxito y escaso
consumo de recursos (una 486 y una placa SVGA eran más que suficientes), este motor fue el
alma de una enorme sucesión de títulos.

Quake
Este fue el primer motor tridimensional propiamente dicho de la casa Id Software, compatible
con tarjetas 3Dfx (es decir, permitía aceleración por hardware). Gracias a que las tarjetas gráficas
10

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.

RenderWare
La primera versión fue lanzada en el año 1996 y llegó hasta una cuarta revisión. Este motor no
fue muy conocido entre el público en general como lo fueron otros motores; sin embargo
RenderWare se sigue usando incluso hoy en día en títulos para PC, XBOX 360, Mac OS X, PSP
y Nintendo Wii. Tanto es así que nada más y nada menos que más de 200 juegos se han basado
en este engine 3D (entre ellos: GTA 3, Airpot Tycoon, Evolution GT y Commandos: Strike
Force). Fue el primer motor 3D en permitir a los programadores alterar parámetros en tiempo
real, es decir, no era necesario recompilar el código para introducir modificaciones en el color o
tamaño de un objeto determinado, lo mismo corría para apartados como la física, relacionados a
la gravedad o inercia (efectos muy primitivos por aquel entonces).

Quake II
También llamado Id Tech II, introdujo plena compatibilidad con OpenGL, lo cual garantizaba
que iba a ser soportado por la gran mayoría de placas gráficas nativamente.
Introdujo efectos con luces de color y un nuevo modelo de juego cuyo código fue desarrollado en
C y se cargaba desde librerías DLL en vez del tradicional lenguaje QuakeC, que era propietario.

GoldSRC
Desarrollado en 1998, fue el engine 3D que logró poner a la misma altura las PC con las
consolas de videojuegos, marcando un punto de inflexión en esta constante evolución. Dio vida a
excepcionales juegos como Half-Life y todos sus derivados (Counter Strike, Team Fortress
Classic, Opposing Forces y Blue Shift, entre otros).
Es un motor basado en Quake (aunque con un 70% de código fuente nuevo) con muchas mejoras
adicionales, como la posibilidad de correr mediante Direct3D, OpenGL o software.

Unreal
Del año 1998, se perfilaba como un engine 3D exclusivo para videojuegos FPS (first person
shooter), pero logró consolidarse como algo más que eso: fue el corazón de títulos del género
RPG (role playing game) como Mass Effect. Encarnó al videojuego homónimo y su versión
multijugador llamada Unreal Tournament.
Además de tener su propio lenguaje de scripts (UnrealScript), Epic ofreció un editor de mapas y
de modificaciones del programa llamado UnrealEd. Las posibilidades de renderizado pasaban
tanto por software como por hardware. El motor ofrecía detección de colisiones, iluminación de
11

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.

Quake III
También llamado Id Tech III, hizo un uso extensivo de sombras y shaders así como también
superficies curvas y la posibilidad de usar millones de colores para las texturas, incluyendo
transparencias. Todos los efectos anteriores requerían una tarjeta 3D compatible con OpenGL y
una PC de 300 MHz como mínimo. Los títulos más destacados que aprovecharon este motor,
fueron Quake III Arena, Call of Duty, Return to Castle Wolfenstein.

Unreal II
Concebido en 2002, apadrinó juegos como Lineage II, Ghost Recon 2, Postal 2, Splinter Cell,
Rainbow Six 3, Unreal II (también Tournament 2003 y 2004).
Se trató de una versión mejorada del motor original sumando soporte de física y 64 bits.
También agregó efectos especiales como líquidos en movimiento, siendo capaz de operar diez
veces más polígonos que su versión anterior.

Source
Considerado por muchos como uno de los mejores motores 3D, logró una muy buena calidad
(con un muy buen nivel de realismo, tanto en gráficos como en física) con un consumo
moderado de recursos. En su época de lanzamiento (año 2003), no era necesario contar con
computadoras o tarjetas gráficas excesivamente costosas.
Dio lugar a títulos como Half Life 2, Counter Strike: Source, Postal III y Portal, entre otros.
Hacía uso de avanzadas tecnologías de iluminación, shaders y sombras dinámicas, con
superficies líquidas de alto realismo; como así también del soporte multiprocesador.

CryEngine
Crytek desarrolló este engine para una demo 3D en tarjetas GeForce 3 (llamada X-Isle) y a causa
del interés del público, se terminó gestando el famoso juego Far Cry, para luego convertirse en el
motor de varias consolas de juegos.
Ofrecía grandes detalles visuales, pudiendo generar modelos de agua muy realista, vegetación
muy abundante y ambientes de tamaño casi ilimitado.

Unreal 3
La tercera versión del motor Unreal tiene soporte para DirectX 9, 10 y 11 (además de XBOX
360, PS3 y Mac OS X); incorporando procesamiento multithreading, soporte para nVidia PhysX
(para procesar física por hardware), efectos mejorados de partículas, HDR de 64 bits de color y
un largo etcétera.
12

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

Euphoria
Vio la luz gracias al mítico Grand Theft Auto IV. Se trata de un engine 3D que puede generar
animaciones en tiempo real a pedido, gracias a la combinación de inteligencia artificial, física y
biomecánica, dando como resultado una simulación muy natural del personaje, animal o cuerpo
humano.
Esta inteligencia adaptativa permite controlar los movimientos de los personajes, lo cual suma
realismo a las animaciones y da un toque de distinción a cada sujeto.

Dunia
Este motor utilizado en Far Cry 2, conserva sólo el 3% de código que CryEngine, y es mucho
más eficiente en el consumo de recursos que CryEngine 2 (utilizado en el juego Crysis). Dunia
aprovecha las bondades de procesadores multicore y puede generar escenarios destructibles, IA
dinámica y posibilidad de usar mapas de gran tamaño.
13

CAPITULO 2: UNITY
¿QUE ES UNITY?
Es un motor gráfico 3D para PC y Mac que viene empaquetado como una herramienta para crear
juegos, aplicaciones interactivas, visualizaciones y animaciones en 3D y tiempo real. Unity
puede publicar contenido para múltiples plataformas como PC, Mac, Flash(Hasta la version 4),
XBox, PS2/3/4, Android, PSVita y iPhone. El motor también puede publicar juegos basados en
web usando el plugin Unity web player.

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
14

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 Game Object
(GO), donde se puede estudiar los componentes del juego en objetos dóciles, que está hecho de
muchos componentes individuales.
Haciendo objetos individuales dentro del juego e iniciando funcionabilidad en ellos con cada
componente que se sume, se puede expandir el juego en una manera progresiva lógica. Los
componentes a su vez tienen variables, esencialmente por los cuales serán controlados.

HISTORIA DE UNITY
La primera versión de Unity se lanzó en la Conferencia Mundial de Desarrolladores de Apple en
2005. Fue construido exclusivamente para funcionar y generar proyectos en los equipos de la
plataforma Mac y obtuvo el éxito suficiente como para continuar con el desarrollo del motor y
herramientas. Unity 3 fue lanzado en septiembre de 2010 y se centró en empezar a introducir
más herramientas que los estudios de alta gama por lo general tienen a su disposición, con el fin
de captar el interés de los desarrolladores más grandes, mientras que proporciona herramientas
para equipos independientes y más pequeñas que normalmente serían difíciles de conseguir en
un paquete asequible. La última versión de Unity, Unity 5, lanzada a principios de 2015, se
anunció en Game Developers e incluye añadidos como Mecanim animation, soporte para
DirectX 11 y soporte para juegos en Linux y arreglo de bugs y texturas. Desarrollado por
creadores de juegos para mayor expectativa.
15

CAPITULO 3: INSTALACION DE UNITY

DESCARGAR UNITY
Lo primero que tenemos que hacer es buscar en nuestro navegador Unity y seleccionaremos el
enlace que nos permite descargar Unity
16

Una vez que estemos en la pagina de descarga de Unity, lo siguiente es seleccionar la opción que
dice descargar Unity Hub, que es una herramienta que nos va a ayudar a descargar la versión más
reciente y más adecuada a nuestro equipo
Cuando presionemos el botón resaltado en la imagen anterior, comenzará la descarga del Hub de
Unity. La descarga no tardara mucho, en nuestro navegador
debería de aparecer un icono similar a la siguiente imagen

Lo

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
17

Una vez que termine la instalación,


dejaremos la casilla marcada y
presionaremos el botón de
terminar

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

Descargará complementos que le


permitan funcionar de manera óptima,
una vez terminado ya estará listo el
editor de Unity
19

CAPITULO 4: ENTORNO DE UNITY


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

En la esquina superior derecha de la Pantalla de Inicio, seleccione ‘Nuevo’ para abrir la vista
Crear Proyecto
Para mostrar la vista Crear Proyecto de la Pantalla de Inicio cuando ya esté en el editor de Unity,
seleccione New Project… desde el menú File.

Archivo>Nuevo Proyecto - Muestra la vista Crear Proyecto de la Pantalla de Inicio dentro del
editor de Unity
Desde la vista Crear Proyecto de la Pantalla de Inicio, puede nombrar, establecer opciones, y
especificar la localización de su nuevo proyecto.
21

La vista Crear Proyecto de la Pantalla de Inicio


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!
22

opciones de paquetes de Assets - puede elegir añadirlas ahora o ignorar esta opción y añadirlas
más adelante
Abriendo un Proyecto
Cuando usted inicie el editor de Unity, se muestra y abre la vista del Project de la pantalla de
inicio. De aquí usted puede escoger el proyecto que usted desea abrir. Para mostrar la vista de
Abrir Proyecto de la Pantalla de Inicio cuando ya está en el editor de Unity, seleccione Open
Project desde el menú File.

Archivo>Abrir Proyecto - Muestra la vista de Abrir Proyecto de la Pantalla de Inicio dentro del
editor de Unity
La vista Abrir Proyecto de la Pantalla de Inicio muestra todos los proyectos de los que tiene
constancia el editor de Unity. (Si el editor está recién instalado y no conoce la localización de sus
proyectos existentes, le indicará que cree un nuevo proyecto.
23

La vista Abrir Proyecto de la Pantalla de Inicio - Seleccione ‘Abrir’ para localizar y abrir un
proyecto existente que no se esté mostrando
Haga clic en cualquiera de los proyectos que se muestran en la lista para abrirlo. Si su proyecto
no está listado, necesitará indicarle al editor dónde está.
Para ubicar y abrir un proyecto existente que no está listado:
1. Seleccione Open. Esto mostrará el Finder de su ordenador (Mac OS X) o el Explorador de
Archivos (Windows).
7. En el Finder o en el Explorador de Archivos, seleccione la carpeta de proyecto que quiera
abrir y seleccione “Abrir”.
(NOTA: Para abrir un proyecto de Unity, no hay un archivo específico de proyecto de Unity que
seleccionar. Un proyecto de Unity es una colección de archivos, así que hay que indicarle al
editor de Unity que abra una carpeta, en vez de un archivo específico.)

CONOCIENDO EL MOTRO GRAFICO


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

La ventana del Proyecto


25

The Project Window (ventana del proyecto) muestra sus assets de librería que están disponibles
para ser usados. Cuando usted importe sus assets a su proyecto, estos aparecen aquí.

 
La Scene View (vista de escena)

La Scene View le permite a usted una navegación visual y editar su escena. La scene view puede
mostrar una perspectiva 2D o 3D dependiendo en el tipo de proyecto en el que esté trabajando.
 
26

 
La ventana de Jerarquía

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.

 
27

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.
 

 
La barra de herramientas

La barra de herramientas proporciona un acceso a las características más esenciales para trabajar.
En la izquierda contiene las herramientas básicas para manipular la scene view y los objetos
dentro de esta. En el centro están los controles de reproducción, pausa, y pasos. Los botones a la
derecha le dan acceso a sus servicios de Unity Cloud y su cuenta de Unity, seguido por un menú
de visibilidad de capas, y finalmente el menú del layout del editor (que proporciona algunos
diseños alternativos para la ventana del editor, y le permite a usted guardar sus propios layouts
personalizados).
La barra de herramienta no es una ventana, y solamente es parte de la interfaz de Unity que usted
no puede re-ajustar.
28

ASSETS
Un asset es una representación de cualquier item que puede ser utilizado en su juego o proyecto.
Un asset podría venir de un archivo creado afuera de Unity, tal como un modelo 3D, un archivo
de audio, una imagen, o cualquiera de los otros tipos de archivos que Unity soporta. También
hay otros tipos de asset que pueden ser creados dentro de Unity, tal como un Animator
Controller, un Audio Mixer o una Render Texture.

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

Objetos Primitivos
Unity puede trabajar con modelos 3D de cualquier forma que puedan ser creados con un
software de modelado. Sin embargo, hay un número de tipos de objetos primitivos que pueden
ser creados directamente dentro de Unity, principalmente Cube, Sphere, Capsule, Cylinder, Plane
and Quad. Estos objetos son útiles de vez en cuando en su propio derecho (un plano es utilizado
comúnmente como una superficie de suelo plana, por ejemplo) pero estos también ofrecen una
manera rápida de crear marcadores de posición y prototipos para propósitos de pruebas.
Cualquiera de las primitivas pueden agregarse a la escena utilizando el item apropiado en el
menú GameObject > 3D Object.
29

Cubo

Este es un cubo simple con lados de una unidad de largo, texturizado para que la imagen se
repita en cada una de las seis caras. Como es, un cubo no es un objeto muy com ún en la mayoría
de los juegos pero una vez es escalado, es muy útil para paredes, postes, cajas, pasos, y otros
items similares. También es un objeto que sirve como marcador de posición para programadores
para utilizar durante el desarrollo cuando un modelo finalizado todavía no está disponible. Por
ejemplo, el cuerpo de carro puede ser burdamente modelado utilizando una caja alargada con las
dimensiones correctas. Aunque esto no es útil para el juego terminado, es bueno como una
representación simple del objeto para probar el código de control del carro. Ya que los bordes de
un cubo son de una sola unidad de grandes, usted puede revisar las proporciones de un mesh
importado a la escena agregando un cubo cerca de este y comprando tamaños.
30

Esfera

Esta es una esfera de un diámetro de una unidad (ie, un radio de 0.5 unidad - media unidad),
texturizada para que la imagen entera se envuelva alrededor una vez con la parte de arriba y
abajo “pellizcado-aplastado” en los polos. Las esferas son obviamente muy útiles para
representar pelotas, planetas y proyectiles pero una esfera semi-transparente puede también hacer
un bonito dispositivo GUI para representar el radio de un efecto.

Cápsula
31

Una cápsula es un cilíndrico con unas tapas hemisféricas al final. El objeto es una unidad en
diámetro y dos unidades de alto (El cuerpo es una unidad y dos tapas son media unidad cada
una). Es texturizada para que la imagen se envuelva exactamente una vez, pellizcada-apretada en
el ápice de cada hemisferio. En particular, la física de un objeto redondo es a veces mejor que
aquellos de una caja para ciertas tareas.

Cilindro

Este es un cilindro simple que es dos unidades de alto y una unidad de diámetro, texturizado para
que la imagen se envuelva una vez alrededor de la forma del tubo del cuerpo pero también
aparece separadamente en dos planos, con terminaciones circulares. Los cilindros son muy útiles
para crear postes, varillas y llantas pero usted debería tener en cuenta que la forma del collider es
de verdad una cápsula (no hay un collider cilindro primitivo en Unity). Usted debería crear un
mesh de la forma apropiada en el programa de modelado y adjuntar un mesh collider si usted
necesita un collider cilíndrico preciso para propósitos de física.
32

Plano

Este es un cuadrado plano con bordes con diez unidades de largo orientado en el plano XZ del
espacio de coordenada local. Es texturizado para que la imagen completa aparezca exactamente
una vez dentro del cuadrado. Un plano es útil para la mayoría de tipos de superficies planas,
como lo son los pisos y las paredes. Un superficie también se necesita a veces para mostrar
imagenes o películas en GUI y efectos especiales. Aunque un plano puede ser utilizado para
cosas como esto, la primitiva simple quad es a veces un ajuste más natural para la tarea.
33

Quad

La primitiva quad se asemeja al plano pero sus bordes solo son una unidad de largos y la
superficie es orientada en el plano XY del espacio de coordenadas local. También, un quad es
dividido en dos triángulos dónde el plano contiene dos-cientos. Un quad es útil en casos dónde
un objeto de escena debe ser utilizado simplemente como una pantalla de visualización para la
imagen o película. Un GUI simple y una visualización de información puede ser implementada
utilizando quads, al igual que partículas, sprites e imágenes “impostoras” que sustituyen por
objetos sólidos vistos en la distancia.

Importando Assets
Los Assets creados afuera de Unity deben ser traídos a Unity al tener el archivo ya sea guardado
directamente a la carpeta “Assets” de su proyecto, o copiado a esa carpeta. Para muchos
formatos comunes, usted puede guardar su archivo fuente directamente a la carpeta Assets de su
proyecto y Unity será capaz de leerlo. Unity va a notar cuando usted ha guardado nuevos
cambios al archivo y va a re-importarlo si es necesario.
Cuando usted cree un proyecto de Unity, usted está creando una carpeta - llamada por su
proyecto - que contiene las siguientes sub-carpetas:

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


34

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.

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
35

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.

Algunos tipos comunes de Asset


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.

Archivos de modelos 3D
Si usted guarda sus archivos 3D de la mayoría del software de paquetes 3D en su formato nativo
(ej, .max, .blend, .mb, .ma) a su carpeta de Assets, estos serán importados al llamar de vuelta a su
plugin(*) de exportación de paquetes 3D FBX. De manera alternativa usted puede exporta como
FBX de su app 3D a su proyecto de Unity. Lea más acerca de importar archivos 3D de su app
3D.

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.

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.

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
36

archivo fuente en la carpeta Asset, esto va a causar que Unity re-importe el asset nuevamente
para reflejar los nuevos cambios.

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

Haciendo click en un asset de imagen en la ventana del Proyecto muestra los import settings para
ese asset en el Inspector

Para otros tipos de asset, los import settings se verán diferente. Los diferentes tipos de ajustes
que usted verá se relacionan al tipo de asset seleccionado. Aquí hay un ejemplo de un asset de
Audio, con sus import settings (ajustes de importación) mostradas en el inspector.

Un asset de audio seleccionado en la ventana del Proyecto muestra los import settings del audio
para ese asset en el Inspector.

Si usted está desarrollando un proyecto multo-plataforma, usted puede anular los ajustes
“default” (predeterminados) y asignar unos import settings diferentes en una base por
plataforma.

La ventana Project
38

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

El panel izquierdo del navegador muestra la estructura de carpetas del proyecto como una lista
de jerarquía. Cuando una carpeta es seleccionada de una lista haciendo click, su contenido va a
ser mostrado en el panel a la derecha. Usted puede hacer click en el triángulo pequeño para
expandir o colapsar la carpeta, mostrando cualquier carpetas anidadas que contenga. Mantenga
presionado Alt mientras usted hace click para expandir o colapsar cualquier carpetas anidas
recursivamente.

Los assets individuales son mostrados en el panel de la mano derecha como iconos que indican
su tipo( script, material, sub-carpeta, etc). Los iconos pueden ser redimensionados usando el
deslizador que está en la parte inferior del planel; serán remplazados por una vista de una lista de
jerarquía si el deslizador es movido hacia el extremo izquierdo. El espacio a la izquierda del
deslizador muestra el elemento actualmente seleccionado, incluyendo una ruta completa al
elemento si se está realizando una búsqueda.

Encima de la lista de la estructura del proyecto hay una sección de Favorites en donde se puede
colocar elementos que frecuentemente se usen para tener un acceso fácil a estos. Puede arrastrar
39

elementos de la lista de la estructura del proyecto a los Favoritos y también guardar las consultas
de búsqueda ahí. (mirar Buscando abajo).
Justo encima del panel está una “ ruta de navegación” que muestra la ruta a la carpeta que
actualmente se esté viendo. Los elementos separados de la ruta pueden ser oprimidos(haciendo
click) para una navegación fácil alrededor de la jerarquía de la carpeta. Cuando se busque, esta
barra cambia para mostrar el área que se está buscando( la Carpeta raíz de Assets, la Carpeta
Seleccionada o el Asset Store) junto con una cuenta de assets gratuitos y pagos disponibles en la
tienda, separados por una barra. Hay una opción en sección General de la ventana de
preferencias de Unity para desactivar la visualización de la cuenta de hits del Asset Store si no
son requeridos.

El ‘breadcrumb trail’ (camino con rastros) muestra la ruta a la carpeta que actualmente está
viendo.
Junto a la esquina superior de la ventana del navegador se encuentra la barra de herramientas.

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

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

Tenga en cuenta que los filtros funciona mediante la adición de un término extra en el texto de
búsqueda. Un término que empiece con “t:” filtra por el tipo específico del asset, mientras “l:”
filtra por etiqueta(label). Puede escribir estos términos directamente en el cuadro de búsqueda en
vez de usar el menú si se sabe lo que se está buscando por. Puede buscar más de un tipo de
etiqueta(label) a la vez. Agregando varios tipos va a expandir la búsqueda para incluir todos los
tipos específicos. Agregando múltiples etiquetas(labels) limitara la búsqueda a elementos que
tengan todas las etiquetas específicas.

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

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.

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

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.
*Orbitar( Dejar oprimido Dejar Dejar oprimido Alt y
Orbit) Alt y haga click oprimido haga click para
para arrastrar. Alt y haga arrastrar.
44

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.


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

Usted puede hacer click en cualquiera de los brazos de los ejes conicos para snap la Camara de la
Scene View al eje que representa (eg vista de encima, vista lateral izquierdo, vista frontal, etc.)
Usted tambien puede toggle la proyeccion de la scene view entre los modos perspective y
orthographic (ortografico) (a veces llamado ‘isometric’) al hacer click en el cubo en el centro del
Scene Gizmo, o el texo debajo de este. La vista orthographic no tiene perspectiva, y es util
combinarlo con uno de los brazos de los ejes conicos para obtener una elevacion frontal o lateral,
o una vista plana.
45

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

Posicionando GameObjects
Cuando construya sus juegos, usted va a poner muchos objetos diferentes en el mundo de su
juego.
Transladar(Translate), Rotar(Rotate), y Escalar(Scale)
46

Use las herramientas del Transform en la Barra de Herramientas para Translate (trasladar),
Rotate (girar), y Scale (escalar) GameObjects individuales. Cada uno tiene un Gizmo
correspondiente que aparece alrededor del GameObject seleccionado en el Scene View. Usted
puede utilizar el mouse y manipular el eje de cualquier Gizmo para cambiar el componente
Transform del GameObject, o puede escribir valores directamente a los campos numéricos del
componente Transform en el Inspector. Cada uno de los tres modos de transform puede ser
seleccionados con las teclas de acceso rápido - W para trasladar, E para rotar y R para escalar y T
para RectTransform. (El RectTransform es utilizado para posicionar elementos UI en vez de
posicionar GameObjects estándar - ver la sección UI del manual para más detalles.)

En el centro del gizmo Translate (trasladar), hay tres pequeños cuadrados que pueden ser
utilizados para arrastrar el objeto dentro de un solo plano (i.e. los dos ejes pueden moverse a la
vez mientras que el tercero se mantiene quieto). Si usted tiene un mouse de tres botones, usted
puede hacer click en el botón del medio y arrastrar para ajustar los ejes que fueron movidos
recientemente (la flecha para este eje va a cambiar a amarilla). Si usted mantiene shift presionado
mientras hace click y arrastra en el centro del Gizmo de Translate, el centro del gizmo cambia a
ser un cuadrado plano, indicando que usted puede mover el objeto alrededor del plano relativo a
la manera en que la cámara de la Scene View está mirando.
Con la herramienta de rotación seleccionada, usted puede cambiar la rotación del objeto
haciendo click y arrastrando los ejes del gizmo de la esfera metálica que aparece alrededor de él.
Al igual que con la herramienta de traslación, el último eje que fue cambiado será coloreado
amarillo y puede ajustarse más haciendo click en el botón del medio del mouse y arrastrando.
Piense en los círculos rojos, verdes y azules como hacer una rotación alrededor de los ejes rojo,
verdes y azules que aparecen en el modo de traslación. (Rojo es el eje-x, verde es el eje-y, y azul
es el eje-z.) Finalmente, el círculo más externo puede ser utilizado para girar el objeto alrededor
del eje-z de la scene view. Usted puede pensar de esto como girar alrededor del espacio de
pantalla.
La herramienta de escala le permite reescalar el objeto igualmente en todos sus ejes a la vez
haciendo click y arrastrando el cubo en el centro del gizmo. También puede escalar los ejes
individualmente, pero, debería tener cuidado cuando haga esto si hay objetos hijo ya que el
efecto puede ser raro. Nuevamente, el último eje cambiado aparecerá en amarillo y puede ser
ajustado arrastrándolo con con el botón del medio del mouse.
47

Tenga en cuenta que en modo 2D, el eje Z no puede ser cambiado en la escena usando los
gizmos. No obstante, es útil para ciertas técnicas de scripting usar el eje Z para otros motivos;
usted todavía puede establecer el eje Z del Inspector en aquellos casos.
Para más información en cambiando(transforming) GameObjects, por favor mirar la página del
Transform Component.
Palanca de Visualización de Gizmo(Gizmo Display Toggles)
Los Gizmo Display Toggles son usados para definir la ubicación de cualquier Transform Gizmo.

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.


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.

Look-At Rotation
Mientras use la herramienta de rotación(Rotate Tool), usted puede mantener oprimido Shift y
Control (Command en Mac) para rotar el objeto hacia un punto en la superficie de cualquier
Collider. Esto hace que la orientación de los objetos respecto a los otros sea simple.

Vertex Snapping
Puede ensamblar sus mundos más fácilmente con una función llamada Vertex Snapping. Esta
función es una herramienta muy simple pero poderosa en Unity. Le permite coger cualquier
48

vértice de un mesh dado y con su mouse colocar el vértice en la misma posición de cualquier
mesh que escoja.
Con esto, usted puede ensamblar sus mundos muy rápido. Por ejemplo, puede alinear tramos de
carretera precisamente en un juego de carreras, o posicionar artículos power up en los vértices de
un mesh.
Usar Vertex Snapping en Unity es sencillo. Simplemente siga estos paso:
• Seleccione el mesh que quiera manipular y asegúrese que la Transform Tool esté activa.
• Oprima y sostenga la tecla V para activar el vertex snapping mode.
• Mueva su cursor encima del vértice de su mesh que quiera usar como punto de pivote.
• Sostenga oprimido el botón izquierdo una vez su cursor esté encima del vértice deseado y
arrastre su mesh junto a cualquier otro vértice en otro mesh.
• Suelte el botón del mouse y la tecla V cuando esté feliz con los resultados.
• Shift-V actúa como una palanca de esta funcionalidad.
• Usted puede snap vertex al vértice, el vértice a la superficie y el punto de pivote al
vértice.

La Vista del Juego (Game View)


49

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

Botón: Función:
Display Oprima esto para escoger de una lista de cámaras si
tiene varias cámaras en la escena. usted puede
asignar Displays a las cámaras en el módulo Camera,
debajo del desplegable Target Display. Este es
configurado a “Display 1” por defecto.
50

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

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

Creación de Juego

Unity le da poder a los diseñadores de juego en hacer juegos. Lo que es realmente especial de
Unity es que no se necesita años de experiencia programando o un titulo universitario en arte
para hacer juegos divertidos. Hay un conjunto de conceptos de trabajo que se necesitan para
aprender a utilizar Unity. Una vez se entiendan estos, uno va a poder encontrarse a sí mismo
haciendo juegos en un instante. Con el tiempo que se va ahorrar poniendo sus juegos en
funcionamiento, va a poder usar mucho más tiempo para refinar, balancear, y ajustar su juego a
la perfección.

Escena
Las escenas contienen los objetos de su juego. Pueden ser usadas para crear un menú principal,
niveles individuales, y cualquier otra cosa. Piense en cada archivo de escena, como un nivel
único. En cada escena, usted va a colocar su ambiente, obstáculos, y decoraciones, el diseño
esencial y la construcción de su juego en pedazos.

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

Cuando usted cree un nuevo proyecto de Unity, su scene view le va a mostrar una nueva escena.
Esta es una escena untitled (sin titulo) y unsaved ( sin guardar). La escena estará vacía al menos
por objetos predeterminados - ya sea una cámara ortográfica, o una cámara perspectiva y una
directional light, dependiendo si comenzó el proyecto en modo 2D o 3D.

Guardando Escenas
Para guardar la escena en la cual usted está actualmente trabajando, escoja File > Save Scene
desde el menú, o presione Ctrl/Cmd + S.
La escenas son guardadas como assets , a la carpeta de Assets de su proyecto. Por lo tanto
aparecen en la ventana del Proyecto, como cualquier otro asset.

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


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.

GameObjects
El GameObject es el tipo de objeto más importante en Unity. Es bien importante entender qué es
un GameObject, y cómo puede ser usado.
¿Qué son los GameObjects?
54

Cada objeto en su juego es un GameObject. No obstante, los GameObjects no hacen nada por sí
mismos. Estos necesitan propiedades especiales antes de que puedan volverse un personaje, un
ambiente, o un efecto especial. Pero cada uno de estos objetos hacen diferentes cosas. Si cada
objeto fuera un GameObject, cómo hacemos nosotros para diferenciar un power-up interactivo
de un cuarto estático? Qué hace que estos GameObjects sean diferentes del uno al otro?

Cuatro diferentes Game Objects, un personaje animado, una luz, un árbol y una fuente de audio
La respuesta a esta pregunta es que los GameObjects son contenedores. Estos pueden guardar las
diferentes piezas que son requeridas para hacer un personaje, una luz, un árbol, un sonido, o lo
que sea que usted quisiera construir. Entonces para de verdad entender GameObjects, usted
necesita entender estas piezas que son llamadas Components.
Dependiendo del objeto que se quiera crear, usted va agregar diferentes combinaciones de
Components al GameObject. Piense en un GameObject como una olla vacía de cocina, y los
Components como los ingredientes diferentes que hacen su receta del gameplay. Unity tiene
varios tipos de componentes integrados, y usted también puede hacer sus propios componentes
utilizando Scripts.

GameObject
Los GameObjects son objetos fundamentales en Unity que representan personajes, props, y el
escenario. Estos no logran nada por sí mismos pero funcionan como contenedoras para
Components, que implementan la verdadera funcionalidad. Por ejemplo, un objeto Light es
creado al adjuntar un componente Light a un GameObject.
For example, a Light object is created by attaching a Light component to a GameObject.

Un simple GameObject con varios componentes


A solid cube object has a Mesh Filter and Mesh Renderer component, to draw the surface of the
cube, and a Box Collider component to represent the object’s solid volume in terms of physics.
55

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.

El Transform Component
Es imposible crear un GameObject en Unity sin un Transform Component. El Transform
Component es uno de los más importantes Components, ya que todas las propiedades Transform
del GameObject están habilitadas por sus usos en este Component. Define la posición, rotación,
y escala del GameObject en el mundo/Scene View del juego. Si un GameObject no tuviera un
Transform Component, sería nada más que alguna información en la memoria del computador.
Efectivamente no existiría en el mundo.
El Transform Component también habilita un concepto llamado Parenting, que es utilizado a
través del Unity Editor y es una parte critica de trabajar con GameObjects. Para aprender más
sobre el Transform Component y Parenting, lea Transform Component Reference page.
Otros Components
El Transform Component es critico para todos los GameObjects, entonces cada GameObject
tiene uno. Pero, los GameObjects pueden tener otros Components también.
56

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.

Usando Components
Los Components son las tuercas y tornillos de los objetos y comportamientos de un juego. Son
las piezas funcionales de cada GameObject. Si todavía no entiende la relación entre Components
y GameObjects, lea la página de GameObjects antes de seguir adelante.
Un GameObject es un contenedor para muchos Components distintos. Por defecto, todos los
GameObjects automáticamente tienen un Transform Component. Esto es porqué el Transform
dicta dónde el GameObject está ubicado, y cómo es girado y escalado. Sin un Transform
Component, el GameObject no tendría lugar en el mundo. Intente crear un GameObject vacío
ahora como ejemplo. Haga click en el elemento del menú GameObject->Create Empty.
Seleccione el new GameObject, y mire el Inspector.

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

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.

El Component Browser
El navegador le permite navegar los components convenientemente por categoría y también tiene
un cuadro de búsqueda que puede utilizar para ubicar components por su nombre.
Puede adjuntar cualquier número o combinación de Components a un solo GameObject. Algunos
Components trabajan mejor en combinación con otros. Por ejemplo, el Rigidbody trabaja con
cualquier Collider. El Rigidbody controla el Transform a través del motor de física NVIDIA
PhysX, y el Collider permite que el Rigidbody se choque e interactúe con otros Colliders.
Si quiere saber más acerca del uso de un component en particular, puede leer sobre cualquiera de
ellos en la página relevante de referencia del Component. También puede acceder la página de
referencia de un Component en Unity haciendo click en el pequeño ? en el encabezado del
Component en el Inspector.
58

Editando Components
Uno de los grandes aspectos de los Components son la flexibilidad. Cuando se adjunta un
Component a un GameObject, hay diferentes valores o Properties en el Component que pueden
ser ajustadas en el editor mientras se construye un juego, o por scripts cuando esté corriendo el
juego. Hay dos tipos de propiedades ( Properties): Values y References.
Mire la imagen de abajo. Es un GameObject vacío con un componente Audio Source. Todos los
valores del Audio Source en el Inspector son valores por defecto.
59
60

Este componente contiene una sola propiedad de Reference (referencia), y siete propiedades de
valor. Un Audio Clip es la propiedad de referencia. Cuando esta Audio Source empieza a
reproducirse, intentará reproducir el archivo audio que está referenciado en la propiedad Audio
Clip. Si ninguna referencia se hace, un error va a ocurrir ya que no hay audio para reproducir.
Usted debe referenciar el archivo dentro del Inspector. Esto es fácil como arrastrar un archivo de
audio del Project View a la propiedad Reference o utilizando el Object Selector (selector de
objetos).
61
62

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]
([Link]).
Los comandos del menú de contexto del Component
El menú de contexto del Component tiene un número de comandos útiles.

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.

Eliminar(Remove)
Un comando Remove Component está disponible para casos en dónde ya no se necesite el
component adjunto al GameObject. Observe que hay algunas combinaciones de components que
dependen de cada uno (eg, Hinge Joint solo funciona cuando un Rigidbody también esté
adjunto); verá un mensaje de advertencia si trata de eliminar components que otros dependan.

Moverse Arriba/Abajo
Los Image Effects components cada uno aplica a un efecto visual a la vista renderizada, pero el
orden en el que los efectos son aplicados es importante. El menú de contexto tiene Move Up and
Move Down.

Copiar/Pegar
El comando Copy Component almacena el tipo y los ajustes actuales de la propiedad de un
Component. Estos luego pueden ser pegados a otro component del mismo tipo con Paste
Component Values. También, puede crear un nuevo component con los valores copiados en un
objeto usando Paste Component As New.
63

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.

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

Propiedades
Propiedad: Función:
Position Posición del Transform en coordenadas X, Y, Z.
Rotation Rotación del Transform alrededor de los ejes X, Y, Z,
medido en grados.
Scale Scale (Escala) del Transform a lo largo de los ejes X, Y
y Z. Un valor de “1” es el tamaño original (el tamaño
con el cual el objeto fue importado).

Los valores de posición, rotación, y escala de un Transform son medidos relativamente al padre
del Transform. Si el Transform no tiene padre, las propiedades son medidas en el espacio del
mundo.

Guardando Su Trabajo
Unity almacena muchos tipos diferentes de información sobre su proyecto, y algunos de ellos se
almacenan de forma diferente al resto. Esto significa que cuándo su trabajo será guardado
dependerá de qué tipos de cambios está haciendo.
Por supuesto, recomendamos guardar con frecuencia, y usar un Sistema de Control de Versiones
(VCS) para preservar los cambios incrementales de su trabajo, y permitirle hacer pruebas y
deshacer los cambios sin arriesgarse a perder el trabajo.
64

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

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

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 ´[Link]´
• Tags Y Capas: se guarda como ´[Link]´
• Audio: se guarda como ´[Link]´
• Time: se guarda como ´[Link]´
• Player: se guarda como ´[Link]´
• Physics: se guarda como ´[Link]´
• Physics 2D: se guarda como ´[Link]´
• Quality: se guarda como ´[Link]´
• Graphics: se guarda como ´[Link]´
• Network: se guarda como ´[Link]´
• Editor: se guarda como ´[Link]´
Los “Build Settings” (Configuración del build)
67

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


´[Link]´.

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

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
68

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

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

Luces (Lights)
Las Lights son una parte esencial de cada escena. Mientras meshes y texturas definen la forma y
la apariencia de una escena, las luces(lights) definen el color y ánimo de su entorno en 3D.
Seguramente trabajará con más de una luz en cada escena. Hacerlas trabajar juntas requiere un
poco de práctica, pero los resultados pueden ser bastante sorprendente.
69

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

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.

Luces brillantes de sol


71

Luces oscuras medievales

Luces de noche de miedo


72

Rendering paths
Unity soporta diferentes Rendering Paths. Estos caminos afectan principalmente las Luces y las
Sombras, entonces escoger el rendering path correcto, dependiendo los requerimientos de su
juego, puede hacer que el rendimiento de su proyecto mejore.

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

Creando Scripts
A diferencia de la mayoría de otros assets, los scripts son usualmente creados dentro de Unity
directamente. Usted puede crear un nuevo script desde el menú Create en la parte superior
izquierda del panel del Proyecto o seleccionando Assets > Create > C# Script (o JavaScript)
desde el menú principal.
El nuevo script será creado en la carpeta que usted haya seleccionado en el Panel del Proyecto.
El nuevo nombre del archivo script será seleccionado, pidiéndole a usted que ingrese otro nuevo
nombre.
73

Es una buena idea ingresar el nombre del nuevo script en este punto en vez de editarlo después.
El nombre que usted ingrese será utilizado para crear el texto inicial dentro del archivo, como es
descrito abajo.

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 [Link];

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 cuando el archivo fue creado. El nombre de la clase y el archivo debe ser el
mismo para permitirle al componente script en ser adjuntado al GameObject.
La primera cosa para tener en cuenta son dos funciones definidas dentro de la clase. La función
Update es el lugar para colocar el código que se encargará de la actualización por frame para el
GameObject. Este puede incluir movimiento, acciones de trigger y responder al input del
usuario, básicamente cualquier cosa que necesite ser manejado en el tiempo durante el gameplay.
Para que la función Update haga su trabajo, a veces es útil configurar variables, leer preferencias
y hacer conexiones con otros GameObjects antes de que cualquier acción del juego tome lugar.
La función Start va a ser llamada por Unity antes de que el gameplay comience (ie, antes de que
la función Update sea llamada por la primera vez) y es un lugar ideal para hacer cualquier
inicialización.
Recomendación para programadores con experiencia: Usted puede sorprenderse que la
inicialización de un objeto no es hecho utilizando una función constructora. Esto se debe a que la
construcción de los objetos es manejado en el editor y no toma lugar al comienzo del gameplay
como usted podría suponer. Si usted intenta definir un constructor para un componente script,
74

éste va a interferir con la operación normal de Unity y puede causar problemas mayores con el
proyecto.
Una script de UnityScript funciona un poco diferente a un script de C#:

#pragma strict

function Start () {

function Update () {

Aquí, las funciones Start y Update tienen el mismo significado pero la clase no está
explícitamente declarada. El script en sí mismo es asumido para definir la clase; éste va a derivar
implícitamente desde MonoBehaviour y toma su nombre desde el nombre del archivo (filename)
del asset script.

Controlando un GameObject
Como es dicho arriba, un script solo define un plano para un Component por lo que nada de su
código será activado hasta que una instancia del script es adjuntada al GameObject. Usted puede
adjuntar un script arrastrando el script asset a un GameObject en el panel de la jerarquía o al
inspector del GameObject el cual está actualmente seleccionado. También hay un sub-menú de
Scripts en el menú del Componente que va a contener todos los scripts disponibles en el
proyecto, incluyendo aquellos que usted ha creado usted mismo. La instancia de script se ve
mucho como cualquier otro Componente en el Inspector:

Una vez adjuntado, el script va a comenzar a funcionar cuando usted presione Play y corra el
juego. Usted puede revisar esto al agregar el siguiente código en la función Start:-

// Use this for initialization


void Start () {
[Link]("I am alive!");
}

[Link] 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).

Variables y el Inspector
Cuando cree un script, usted está esencialmente creando su nuevo propio tipo de componente
que puede ser adjuntado a Game Objects como cualquier otro componente.
75

Al igual que otros Componentes tienen propiedades que son editables en el inspector, usted
puede permitir valores en su script a ser editados desde el Inspector también.
using UnityEngine;
using [Link];

public class MainPlayer : MonoBehaviour {


public string myName;

// Use this for initialization


void Start () {
[Link]("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”.

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 () {
76

Unity le va a permitir a usted cambiar el valor de las variables del script mientras el juego esté
corriendo. Esto es muy útil para ver los efectos de cambios directos sin tener que parar y
reiniciar. Cuando el modo de juego termine, los valores de las variables se van a reset a lo que
sea que estaban antes de que usted pusiera Reproducir. Esto asegura que usted está libre de
ajustar las configuraciones de sus objetos sin miedo de hacer un daño permanente.

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


77

[Link] = 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.
[Link]([Link] * 10f);
}
Tenga en cuenta que no hay razón para que usted no pueda tener más de un script personalizado
adjunto al mismo objeto. Si usted necesita acceder un script desde otro, usted puede utilizar
GetComponente y simplemente utilizar el nombre de la clase script (o nombre del archivo) para
especificar el tipo de Componente que usted quiere.
Si usted intenta recuperar un Componente que no ha sido agregado al GameObject entonces
GetComponent va a devolverle null; usted va a obtener una referencia nula de error en el tiempo
de ejecución si usted intentar cambiar cualquier valor en el objeto nulo.

Accediendo 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;
78

void Start() {
// Start the enemy ten units behind the player character.
[Link] = [Link] - [Link] * 10f;
}
}

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.

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.

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[[Link]];
int i = 0;

foreach (Transform t in transform) {


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

Usted también puede ubicar un objeto hijo especifico por el nombre utilizando la función
[Link] :
[Link]("Gun");
Esto puede ayudar cuando un objeto tiene un hijo que puede ser agregado y quitado durante el
tiempo de juego. Un arma que puede ser recogida y dejada en el suelo es un buen ejemplo de
esto.

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 [Link].

GameObject player;

void Start() {
player = [Link]("MainHeroCharacter");
}

Un objeto o una colección de objetos también pueden ser ubicadas por su tag (etiqueta)
utilizando las funciones [Link] y [Link] .

GameObject player;
GameObject[] enemies;

void Start() {
player = [Link]("Player");
enemies = [Link]("Enemy");
}

CAPITULO 5: EXPORTACION DE PROYECTOS


80

Consideraciones Multi-plataforma
Muchas de las APIs de Unity y estructuras de proyecto son idénticas para todas las plataformas
soportadas, y en algunos casos un proyecto puede simplemente ser reconstruido para ejecutarse
en diferentes dispositivos. Sin embargo, las diferencias fundamentales en el hardware y en
métodos de despliegue hacen que algunas partes del proyecto no puedan ser portadas entre
plataformas sin haber hecho cambios. A continuación se encuentran detalles de algunos
problemas comunes de plataforma cruzada, y sugerencias para solucionarlos.

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

Teclado y joypad
La función [Link] es muy conveniente en plataformas de escritorio como una forma de
consolidar la entrada desde el teclado y el joypad. Sin embargo, esta función no tiene sentido
para las plataformas móviles que se basan en la entrada por medio de la pantalla táctil.
Igualmente, la entrada de teclado estándar de escritorio no porta bien en móviles para otras cosas
que no sean texto escrito. Vale la pena agregar una capa de abstracción al código que maneja la
entrada, si consideras en el futuro portar el juego a otras plataformas. A modo de un ejemplo
simple, si estuvieras haciendo un juego de conducir entonces podrías crear tu propia clase de
entrada y envolver los llamados de API de Unity usando tus propias funciones:-

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


function Steering() {
return [Link]("Horizontal");
}

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


function Acceleration() {
return [Link]("Vertical");
}

var currentGear: int;

// Returns an integer corresponding to the selected gear.


function Gears() {
if ([Link]("p"))
currentGear++;
else if ([Link]("l"))
currentGear--;
81

return currentGear;
}

Una ventaja de envolver los llamados de API en una clase como esta es que todos ellos están
concentrados en un solo archivo fuente, y en consecuencia, será fácil su localización y
reemplazo. Sin embargo, lo más impontante es que debes diseñar tus funciones de entrada de
acuerdo al significado lógico de las entradas en tu juego. Esto será de ayuda para aislar del resto
del código del juego el método específico de entrada usado con una plataforma en particular. Por
ejemplo, la función Gears de arriba podría ser modificada para que la entrada real provenga de
toques en la pantalla de un dispositivo móvil. Si se usa un integer para representar la
indumentaria escogida, esto funcionará bien en todas las plataformas; pero si se mezcla con el
resto del código los llamados de API específicos a la plataforma, esto causará problemas. Puedes
ver conveniente el utilizar compilación dependiente de la plataforma para combinar las diferentes
implementaciones de las funciones de entrada en el mismo archivo fuente, para evitar
intercambios manuales.

Toques y Clics
Las funciones [Link] están diseñadas para que tengan una interpretación
razonablemente obvia en dispositivos móviles aunque no haya un “mouse” como tal. Un simple
toque en la pantalla será reportado como un clic con el botón izquierdo del mouse, y la propiedad
[Link] devuelve la posición del toque mientras el dedo está tocando la pantalla.
Esto significa que los juegos que tengan interacción simple de mouse usualmente pueden trabajar
transparentemente entre las plataformas de escritorio y móvil. Naturalmente, no obstante, con
frecuencia la conversión es mucho menos sencilla que esto. Un juego de escritorio puede hacer
uso de más de un botón del mouse, y un juego para móviles puede detectar múltiples toques en la
pantalla al mismo tiempo.
Al igual que con los llamados de API, el problema puede ser manejado de forma parcial
representando la entrada con valores lógicos que son luego usados por el resto del código del
juego. Por ejemplo, un gesto de “pellizco” para dar zoom en un móvil podría ser reemplazado
por un botón/atajo de + y - en la version de escritorio; la función de entrada podría simplemente
devolver un valor float que especifique el factor de zoom. Igualmente, podría ser posible usar un
tap con dos dedos en móviles para reemplazar el clic con el botón derecho del mouse. Sin
embargo, si las propiedades del dispositivo de entrada son una parte integral del juego, entonces
no puede ser posible remodelarlos en una plataforma diferente. Esto puede significar que el
juego no puede ser portado a todas ellas, o que la entrada y/o la mecánica de juego necesiten ser
modificadas ampliamente.
Acelerómetro, brújula, giroscopio y GPS
Estas entradas provienen de la movilidad de los dispositivos móviles, por lo que puede ser que
no tengan un equivalente significativo en el ambiente de escritorio. Sin embargo, en algunos
casos sólo son un reflejo de controles estándar de juegos y pueden ser portados muy fácilmente.
Por ejemplo, un juego de conducción podría implementar el control de dirección a partir de la
inclinación de un dispositivo móvil (determinada por el acelerómetro). En casos así, los llamadas
API para entrada usualmente son fáciles de reemplazar, de modo que la entrada del acelerómetro
puede ser reemplazada por pulsaciones del teclado, por decir algo. Sin embargo, puede ser
necesario recalibrar las entradas o incluso variar la dificultad del juego para tener en cuenta cada
82

método de entrada distinto. Inclinar un dispositivo es más lento y eventualmente más agotador
que presionar teclas, y también puede hacer más difícil que el jugador se concentre en la pantalla.
Esto puede resultar en que el juego se vuelva más difícil de dominar en un móvil, de modo que
puede ser apropiado frenar el ritmo de la mecánica de juego o conceder más tiempo por nivel.
Esto requerirá que el código del juego sea diseñado para que estos factores puedan ser ajustados
con facilidad.

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.

Reproducción de películas
Hoy en día, los dispositivos móviles son altamente dependientes del soporte de hardware para
permitir la reproducción de películas. El resultado es que estas opciones de reproducción son
limitadas e indudablemente no ofrecen la flexibilidad que el asset MovieTexture tiene en
plataformas de escritorio. Las películas pueden ser reproducidas en pantalla completa en
móviles, pero no hay enfoque alguno sobre usarlos para texturizar objetos dentro del juego (así
que no es posible mostrar una película en una pantalla de TV dentro del juego, por ejemplo). En
términos de portabilidad, está bien usar películas para introducciones, vídeos con escenas de la
historia (cutscenes), instrucciones y otras presentaciones sencillas. Sin embargo, si las películas
necesitan ser visibles dentro del escenario de juego entonces debes considerar si las opciones de
reproducción en móviles serán lo adecuado.

Requerimientos de almacenamiento
El video, el audio e incluso las texturas pueden usar una gran cantidad de almacenamiento y
podrías necesitar tener esto en mente si quieres portar tu juego. El espacio de almacenamiento (el
cual con frecuencia también corresponde al tiempo de descarga) no es usualmente un problema
en máquinas de escritorio, pero este no es el caso con los móviles. Además, las tiendas de
aplicaciones móviles imponen un límite sobre el tamaño máximo de un producto enviado. Puede
requerir algo de planeación para abordar estos asuntos durante el desarrollo de tu juego. Por
ejemplo, podrías necesitar el proporcionar versiones simplificadas de los assets para móviles a
fin de ahorrar espacio. Otra posibilidad es que el juego pueda necesitar ser diseñado para que los
assets grandes puedan ser descargados bajo demanda en lugar de ser parte de la descarga inicial
de la aplicación.

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
83

móviles hacen que la recolecciones de basura puedan ser más frecuentes, y el tiempo que éstas
tomen puede impactar más intensamente sobre el desempeño (causando pausas no deseadas en el
transcurso del juego, etc). Incluso si el juego se ejecuta con la memoria disponible, puede ser
necesario optimizar el código para evitar las pausas de recolección de basura. Puede encontrarse
más información en la página sobre gestión de memoria.

Potencia de la CPU
Un juego que se ejecute bien en una máquina de escritorio podría sufrir de una baja velocidad de
cuadros en un móvil, debido a que el CPU de un móvil tiene que lidiar con la complejidad del
juego. Por tanto, se puede necesitar el poner atención extra a escribir un código más eficiente
cuando un proyecto es portado a una plataforma móvil. Un número de pasos simples para
mejorar la eficiencia son explicados en esta página del manual.

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

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 juego. Cuando quiera cargar una
escena nueva, use [Link]() dentro de sus scripts.
85

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.

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

cargue un nivel, o para game controller scripts que hacen que se mantenga el estado del
juego y el progreso.
• Después de que un nivel finalice de cargar, el mensaje: OnLevelWasLoaded() va a ser
mandado a todos los GameOjects que estén activos.

Precarga
Construcciones publicadas automaticamente precargan todos los assets en una escena cuando la
escena carga. La excepción a esta regla es Scene 0. Esto es porqué la primera escena es
usualmente un spashscreen, que uno quiere mostrar lo más rápido posible.
Para asegurarse que todo su contenido haya sido precargado, puede crear una escena vacía que
llame [Link](1). En las build settings haga que el indice de esta escena sea 0.
Todos los niveles posteriores serán precargados.

CONCLUSION
Realizar esta investigación y documentación de una herramienta tan práctica como es Unity nos
ayuda a darnos cuenta de la dificultad real que tiene el desarrollo de los juegos que tanto nos
gustan y que gracias a estás mismas su desarrollo es más llevadero y menos tedioso a
comparación de como lo era hace unos 20 años.
También nos dejó una mayor estimación a aquellos que se dedican por completo al desarrollo de
los videojuegos, ya que gracias a su dedicación de miles de horas nosotros podemos disfrutar de
87

algunas obras maestras en nuestro tiempo, y nos ayuda a respetarlos más debido a que
pertenecemos a un área en común y sabemos lo que cansado que puede ser el estar sentados y
pensando que hacer para que nuestros trabajos sean más sobresalientes y ofrezcan algo más que
la competencia.

FUENTES CONSULTADAS
Manual De Unity. (s. f.). Recuperado 10 de mayo de 2020, de
[Link]

UNITY. (s. f.). Recuperado 30 de abril de 2020, de [Link]

M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de 2020, de
[Link]

M. (2019, noviembre 8). Qué es Unity y para qué sirve. Recuperado 29 de abril de 2020, de
[Link]

Common questions

Con tecnología de IA

El Transform Component en Unity es crucial para todos los GameObjects, ya que define su posición, rotación y escala en la escena del juego. Sin un Transform Component, un GameObject no tendría una representación tangible en el mundo del juego; sería simplemente información en la memoria del computador. Este componente permite la funcionalidad de parenting, lo que significa que la transformación de un GameObject puede afectar a otros objetos vinculados jerárquicamente. Esto lo convierte en un elemento imprescindible para la colocación y orientación de objetos en el desarrollo de juegos .

En Unity, un GameObject es un objeto fundamental que actúa como un contenedor para diferentes Components. Los GameObjects por sí solos no realizan ninguna función hasta que se les añaden Components, que son los que otorgan funcionalidad. Por ejemplo, al añadir un componente Light a un GameObject, se convierte en una fuente de luz. Los GameObjects siempre tienen un Transform Component, que determina su posición, rotación y escala en el mundo del juego, y permite el parenting entre objetos. Esta relación modular entre GameObjects y Components permite personalizar y escalar las funcionalidades en el desarrollo de juegos, ya que los desarrolladores pueden combinar diferentes Components para lograr el comportamiento deseado de un GameObject .

En Unity, los GameObjects son contenedores flexibles que pueden representar una variedad de elementos del juego, desde personajes hasta efectos especiales. Esto se logra mediante la adición de diferentes Components a un GameObject. Por ejemplo, un GameObject puede convertirse en un personaje al agregarle componentes de animación y física, mientras que otro puede ser un árbol con componentes de malla y apariencia visual. La combinación de Components define su comportamiento y funcionalidad en el juego, permitiendo a los desarrolladores crear una amplia gama de elementos interactivos y visuales .

La Project Window de Unity es una herramienta central para la gestión de assets. Presenta una estructura jerárquica de carpetas que refleja la carpeta 'Assets' del proyecto en el computador. Los desarrolladores pueden seleccionar carpetas para ver su contenido, expandir o colapsar estructuras anidadas, y arrastrar elementos a una sección de Favoritos para un acceso rápido. La capacidad de redimensionar y cambiar la vista entre iconos y listas jerárquicas mejora la flexibilidad en la organización visual de los assets. Además, una barra de navegación facilita el retorno a diferentes niveles del sistema de archivos rápidamente, y el sistema de búsqueda permite a los usuarios encontrar assets específicos con facilidad .

La carpeta 'Assets' es un elemento central en la estructura de un proyecto de Unity, donde se deben almacenar todos los archivos que se utilizan en el proyecto. El contenido de la carpeta 'Assets' se muestra en la Project Window de Unity, desde donde los archivos se gestionan e integran al proyecto. Unity detecta automáticamente cuando se añaden o modifican archivos dentro de esta carpeta y los importa para su uso. Los desarrolladores pueden organizar los Assets creando subcarpetas. Es importante que cuando se muevan o renombren archivos, también se haga con sus respectivos archivos .meta para evitar errores .

Los ajustes de importación en Unity determinan cómo se configura un asset cuando es importado al proyecto. Estos ajustes varían dependiendo del tipo de asset; por ejemplo, un archivo de imagen puede ser importado como una textura, un sprite 2D, o un normal map, y cada importación afectará su uso y propiedades dentro del juego. El Inspector muestra estos ajustes y permite modificarlos según las necesidades del proyecto. Además, en proyectos multiplataforma, los ajustes por defecto pueden ser sobreescritos para optimizar cada plataforma específica, permitiendo un control detallado sobre el rendimiento y la apariencia de los assets .

Los archivos .meta en Unity son vitales porque contienen información crucial sobre cómo se utilizan los assets dentro del proyecto. Cada asset y carpeta dentro de la carpeta 'Assets' tiene un archivo .meta asociado que no es visible en la Project Window. Si los archivos o carpetas se mueven o renombran en el sistema, los archivos .meta correspondientes deben ser movidos o renombrados también, para asegurar que la vinculación se mantenga intacta. La manera más segura de mover o renombrar assets es hacerlo desde dentro del editor de Unity, para que los cambios en los archivos .meta se realicen automáticamente .

En Unity, los cambios realizados a los Components mientras el juego está en modo Play son revertidos automáticamente al salir de este modo. Esto significa que cualquier ajuste realizado durante la simulación, como experimentar con diferentes valores de altura de salto, no afectará los ajustes guardados del proyecto. Esta característica es útil porque permite a los desarrolladores probar interactivamente y ajustar aspectos del juego sin riesgo de perder configuraciones originales, facilitando un proceso iterativo de desarrollo y refinamiento para mejorar la experiencia de juego .

Para abrir un proyecto existente en Unity que no está listado, primero seleccione 'Open' para acceder al Finder en Mac OS X o al Explorador de Archivos en Windows. Navegue hasta la carpeta del proyecto que desea abrir y selecciónelo. No es necesario seleccionar un archivo específico de proyecto de Unity, ya que un proyecto se compone de una colección de archivos. Simplemente señale al editor de Unity la carpeta completa que contiene el proyecto .

El Component Browser en Unity es una herramienta que simplifica la adición y manejo de Components en un GameObject. Al usar el botón 'Add Component' en el inspector de un objeto, el desarrollador puede acceder a un menú organizado de Components disponibles, explorarlos por categoría, e incluso buscar componentes específicos mediante texto. Esto no solo hace que sea más fácil personalizar un GameObject al agregar nuevas funcionalidades, sino que también hace que el proceso sea más eficiente y menos propenso a errores. El uso del Component Browser posibilita a los desarrolladores aumentar la complejidad de objetos en el juego de manera controlada y organizada, mejorando la productividad en el desarrollo .

También podría gustarte