Introduccion A Unity
Introduccion A Unity
Unity
Fundamentos de Unity
Contenid
Instalación
o
Creando nuevos proyectos
Interfaz
Programación con C#
Fundamentos de
Unity
¿Qué es
Unity?
Unity es una plataforma
de desarrollo de
videojuegos.
Usada para crear juegos
3D y 2D, desplegarlos a
través de dispositivos
móviles, escritorio,
VR/AR, consolas o la
web.
¿Qué es
Unity?
Unity esta disponible
para desarrollar desde
plataformas
Windows, Mac OS y
Linux.
Interoperabilidad
de Unity
Unity puede usarse
junto con Blender, 3ds
Max, Maya, Softimage,
Modo, ZBrush,
Cinema 4D,
Cheetah3D, Adobe
Photoshop, Adobe
Fireworks y
Allegorithmic
Substance.
Proyectos
Destacado
sup Head
C
Proyectos
Destacado
FsireWatch
Proyectos
Destacado
sSuper Mario Run
¿Cómo
consigo
Unity?
Se descarga a través de
su sitio web, haciendo
clic en el enlace de
“Obtener Unity”.
Nota: Es necesario crear
una cuenta de Unity
para poder utilizar la
herramienta.
https://unity3d.com/es
Licenciamiento
Plan Personal: Gratuito e ideal
para aprender. Podemos usarlo
si facturamos menos de 100 mil
USD anuales.
Plan Plus: Costo mensual, con
más herramientas. Se debe de
facturar anualmente menos de
200 mil USD para poder acceder
a este plan.
Plan Pro: Costo mensual, aún
más herramientas. Si
facturamos más de 200 mil USD,
debemos usar este plan.
www.cesarguerra.mx
Cuenta de
Unity
La creación de la cuenta de
Unity puede hacerse desde la
página web de Unity o bien
al abrir por primera vez la
aplicación.
www.cesarguerra.mx
Para ejecutar
Para desarrollo
OS: Windows 7 SP1+, 8, 10, solo versiones de 64 bits; Mac
OS X 10.9+.
juegos de Unity
Por lo general, el contenido desarrollado con Unity
No se han probado las versiones de servidor de Windows puede ejecutarse bastante bien en todas partes.
& OS X. Qué tan bien se ejecuta depende de la
CPU: Soporte para el conjunto de instrucciones SSE2.
Requerimiento
complejidad
GPU: Tarjeta de video con capacidad para DX10 de su proyecto. Requisitos más detallados:
(shader modelo 4.0). Escritorio:
s Técnicos
El resto depende principalmente de la complejidad de OS: Windows Vista SP1+, Mac OS X
sus 10.9+,
proyectos. Ubuntu 12.04+, SteamOS+.
Tarjeta de video con capacidad para DX10
Requisitos adicionales para el (shader modelo 4.0).
CPU: compatible con el conjunto de
desarrollo de plataformas: instrucciones SSE2.
El reproductor de iOS requiere iOS 7.0 o una versión
•iOS: Computadora Mac con sistema operativo versión OS
superior.
X 10.9.4 como mínimo y Xcode 7.0 o superior.
• Android: Kit de desarrollo Android SDK y Java (JDK); el Android: OS 4.1 o posterior; ARMv7 CPU con
soporte NEON o CPU Atom; OpenGL ES 2.0 o
IL2CPP scripting backend requiere Android NDK.
•Windows Store: Windows 10 (64 bits) y Visual Studio y posterior.
WebGL: Cualquier versión de escritorio
plataforma SDK correspondiente:
• Universal Windows Platform (UWP): Windows reciente de
Firefox, Chrome, Edge o Safari
10
Windows Store Apps: Windows 10 y tarjeta de video
(64 bits), Visual Studio 2015 o posterior y Windows
con capacidad para DX10 (shader modelo 4.0).
10 SDK;
• El scripting backend IL2CPP también requiere la
instalación de la función de compilador C++ con
Visual Studio.
https://unity3d.com/es/unity/system-requirements
Instalación
Unity
Download
Assistant
Es la herramienta que nos
permitirá descargar e instalar
Unity y sus componentes.
Debemos seleccionar aquellos
componentes que tengan
sentido para la plataforma que
planeamos desarrollar.
Unity
Download
Assistant
Podemos elegir si queremos
descargar el instalador de Unity
de manera temporal y borrarlo
después de instalarlo.
O bien:
Que guarde una copia del
instalador en el disco duro.
Unity
Download
Assistant
Archivos
duro.
descargados en nuestro disco
Activación
de Unity
Después de instalar Unity, la
primera vez que lo usemos
nos pedirá activación,
bastara con entrar con la
cuenta previamente creada y
elegir que usaremos la
licencia personal.
Este proceso requiere
conexión a internet. En caso
contrario podemos optar por
una activación Manual
(offline)
Creando nuevos
proyectos
Creación de un
nuevo
Proyecto
Es importante especificar
la ruta donde se guardará
físicamente el proyecto e
indicar si lo que haremos
será de tipo 2D o 3D.
Es recomendable no usar
espacios en blanco en el
nombre del proyecto.
Proyecto
Esquema de
Trabajo de
Unity
Un proyecto puede
contener varias escenas.
La lógica del juego nos
permitirá movernos entre Escena 1 Escena 2 Escena N
diferentes escenas (o
niveles).
Los materiales, scripts de
programación y
elementos del ambiente
forman parte de una
escena.
Materiales Scripts Ambiente
Interfaz
Primeros Pasos y Opciones Habituales
Interfaz General de Unity
Toolbar: Acceso a herramientas básicas como manipular la
scene view y los objetos dentro de esta; los controles de
reproducción, pausa, y pasos; capas, cuenta etc.
Scene View: Escenario virtual donde colocaremos los
objetos.
Interfaz Project Window: Muestra assets de librería que están
disponibles para ser usados en una o más Escenas. Son
Principales Elementos
archivos físicos.
Hierarchy Window: Es una representación jerárquica de cada
objeto en la escena. Podria decirse que son “las instancias” de
lo que tenemos en el Project Window.
Inspector Window: Panel que muestra 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 puede variar.
Escena
(Scene)
Nuestro escenario virtual donde
colocaremos los objetos visuales.
Movimiento
en Escena
(Scene)
Paneo (Click Central)
Rotación (Click Izq. +
Mov. Raton)
Zoom (Scroll del Raton,
Arriba y Abajo)
Escena
(Scene)
Vistas
• Perspectiva: Con noción de
profundidad.
• Isográfica: Sin noción de
profundidad.
Juego
(Game)
Es el modo de “Ejecución” de
nuestra aplicación.
En este modo podremos
previsualizar como “corre”
nuestra aplicación para probar.
También se ejecutan los scripts
y entran en juegos los hilos de
ejecución en Unity.
Game
Objects
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.
Game Objects
(Primitivas
3D)
Son los objetos básicos
tridimensionales en Unity.
Camer
aque hemos
Sirven para mostrar el mundo
creado al
espectador o jugador.
Siempre debemos tener al
menos una cámara. Aunque
podemos tener más de una e ir
alternando vistas o mostrando 2
diferentes (ejemplo: pantalla
compartida en juegos
cooperativos).
www.cesarguerra.mx
Clipping
Planes en
Camaras
Los Clipping Planes en las Camaras
tienen que ver con la Distancia de
Visión.
Pivotes
Manteniendo pulsada la tecla V
movemos temporalmente el Pivote.
Sección
Proyecto
(Project)
La información de Project
puede ser utilizado en uno o
más escenarios.
Es recomendable usar
carpetas y archivos con
nombres en inglés y
convención CamelCase.
www.cesarguerra.mx
Asset
srepresentación
U n asset es una
de cualquier
item que puede ser utilizado
en un proyecto de Unity.
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.
www.cesarguerra.mx
Prefabs
Es un asset que almacena un objeto
GameObject con componentes y
propiedades.
Jerarquía
(Hierarchy
E)s donde podremos visualizar en
formato de texto todos los elementos
presentes en nuestro Escenario actual.
www.cesarguerra.mx
Sección
Jerarquía
(Hierarchy
)unana buena
U práctica consiste en tener
jerarquía estandarizada y
entendible para organizar nuestra
jerarquía. Cámaras de nuestra escena.
Objetos creados en ejecución.
Hacerlo nos permitirá trabajar mejor Interfaz de Usuario.
con proyectos complejos.
Scripts
Adicionalmente nos permitirá Luces
compartir el proyecto y que sea más Objetos del mundo
fácilmente entendible por otra
persona. Estructuras
Objetos
Tierra/Superficies
www.cesarguerra.mx
Materiales
(Materials
Los materiales contienen la
información de color/textura e
)iluminación.
Materiales
(Materials
En un Material de Shader Standard:
Iluminación
(Illumination
)Surface: Todos los triangulos que
Terminología
Iluminación
(Illumination
L)a iluminación puede darse en 2
modos:
Realtime: Iluminación que se
genera en tiempo real en
ejecución de la aplicación.
Baked: Se precalcula la
iluminación antes de la
ejecución en tiempo real. Útil
para mejorar el rendimiento e
iluminar ciertas regiones. Como
desventaja no genera sombras
en tiempo real ni tiene specular.
www.cesarguerra.mx
Iluminación
(Illumination
E)xisten 4 tipos fundamentales de Directional Spot
iluminación:
Directional
Spot
Point
Área
(Bak
ed) Point Area (Baked)
www.cesarguerra.mx
Iluminación
(Illumination
)Podemos modificar el
Material del cielo (e
información de iluminación)
de la escena desde la
ventana:
Window -> Lighting ->
Settings
Programación con
C# www.cesarguerra.mx
www.cesarguerra.mx
Cambiando
el editor por
defecto
Es recomendable usar MonoDevelop
como editor de código por defecto
para Unity.
MonoDevelop
MonoDevelop es un entorno de
desarrollo integrado (IDE) libre y
gratuito.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyFirstScript : MonoBehaviour {
Script Vacío // Use this for initialization
Cuando en Unity creamos un nuevo
Script, el archivo viene con un void Start () {
contenido base como el siguiente.
}
// Update is called once per frame
void Update () {
}
}
www.cesarguerra.mx
:MonoBehavior
La clase MonoBehaviour es una
de las principales de las API de
Unity.
Si quitamos
MonoBehavior, ya no
podemos acceder a
transform.
www.cesarguerra.mx
// Se ejecuta una vez. Ocurre en el frame en que el script es
habilitado. Se ejecuta ANTES de cualquier UPDATE. Útil para
inicializar variables.
void Start () {
Hilos de
}
Ejecución
// Se ejecuta cada frame. Esto ocurre después del renderizado
en Unity de los objetos. Es útil para realizar la mayoría del código de
comportamiento (movimientos, vida, controles, etc. ), ya que
Principales: puede comprobar o realizar acciones hasta que cierto criterio se
cumpla.
• Start void Update () {
• Update }
• Awake // Se ejecuta una vez. Ocurre justo después de instanciar un
prefab y antes de cualquier Start. Aunque este deshabilitado el
Script en el inspector de objetos, la ejecución de Awake ocurre.
void Awake () {
}
www.cesarguerra.mx
Adjuntando
scripts a
GameObject
sGameObject
U n Script puede ser adjuntado a un
y este aparecerá en el
Inspector.
Hilos de
Ejecución
en Unity
Diagrama más completo de hilos de
ejecución.
www.cesarguerra.mx
Buenas
prácticas de
nomenclatura
de Variables
Como buena practica, usaremos un
prefijo para nombrar una variable:
m_
Seguido del nombre de la variable en
CamelCase:
MiVariable
Para al final obtener:
m_MiVariable
Si es variable publica, al ser colocado
en el Inspector, Unity omitirá el prefijo
y colocara los espacios al nombre de la
variable.
www.cesarguerra.mx
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Variables : MonoBehaviour {
Declaración public string m_MiMensaje;
de Variables private string m_VariablePrivada;
Principalmente usaremos // Use this for initialization
estos 2 tipos de variables: void Start () {
Privada (Private): Donde la m_VariablePrivada = " solo Accesible dentro de la clase";
variable sólo puede ser Debug.Log(m_MiMensaje + m_VariablePrivada);
usada dentro de nuestra }
clase. // Update is called once per frame
Pública (Public): Donde el void Update () {
valor de la variable
puede ser establecido }
desde el inspector del }
objeto que tiene el
Script.
www.cesarguerra.mx
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateObject : MonoBehaviour {
Ejemplo: //Public Fields
Script de public float m_Velocity;
public Vector3 m_Direction;
Rotación
// Use this for initialization
Script que realiza la rotación de void Start () {
un objeto, controlando gracias a
variables publicas la velocidad y }
dirección de la rotación.
// Update is called once per frame
void Update () {
transform.Rotate (m_Direction * m_Velocity * Time.deltaTime);
}
}
www.cesarguerra.mx
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TranslateObject :
MonoBehaviour {
//public fields
public float m_Velocity;
Ejemplo:
public float m_MaxDistance;
public Vector3 m_Direction;
public bool
m_GlobalOrientation;
Script de //private fields
private Vector3 m_Origin;
void
} Start () {
Incremento y decremento entre
// Update is called once per frame
un rango de valores, a velocidad void Update () {
variable, multiplicando Time.tim //Tiempo que lleva ejecutandose el juego -> Time.time
float newScale = Mathf.PingPong (Time.time*m_Velocity, m_MaxScale -
e por la variable m_Velocity y m_MinScale) + m_MinScale;
// Uso de operadores ternarios, para validar en que ejes se
co ntrolando en que ejes se incrementa.
float newScaleX = m_ScaleX ? newScale :
escala. transform.localScale.x; float newScaleY = m_ScaleY ? newScale :
transform.localScale.y; float newScaleZ = m_ScaleZ ? newScale :
transform.localScale.z;
transform.localScale = new Vector3
(newScaleX,newScaleY,newScaleZ);
}
}
Referencias
Unity3D: Awake and Start https://docs.unity3d.com/es/current/Manual/
CreatingComponents.html
https://unity3d.com/es/learn/tutorials/topics/
scripting/awake-and-start https://docs.unity3d.com/Manual/LightMode-
Baked.html
https://www.relaxate.com/tutorial-
documentacion-manual-programacion-
videojuegos-unity-2d-parte-2
https://www.deustoformacion.com/blog/dis
e no-produccion-audiovisual/6-mejores-
juegos- 3d-hechos-con-unity
https://docs.unity3d.com/es/current/Manual/
class-GameObject.html