0% encontró este documento útil (0 votos)
45 vistas61 páginas

Introduccion A Unity

Este documento introduce los fundamentos de Unity, incluyendo su instalación, creación de proyectos, interfaz y programación con C#. Explica conceptos como escenas, game objects, cámaras y pivotes.
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 PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas61 páginas

Introduccion A Unity

Este documento introduce los fundamentos de Unity, incluyendo su instalación, creación de proyectos, interfaz y programación con C#. Explica conceptos como escenas, game objects, cámaras y pivotes.
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 PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 61

Introducción a

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.

Contiene elementos como cubos,


esferas, cilindros, capsulas, planos, etc.
www.cesarguerra.mx

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.

En Near configuramos que tan cerca


puede estar un objeto de la cámara
antes que desaparezca.

En Far configuramos que tan lejos


puede ver objetos nuestra cámara.

La correcta configuración de los


Clipping Planes influyen tanto en la
experiencia de juego/usuario así como
en el rendimiento del mismo.
www.cesarguerra.mx

Pivotes
Manteniendo pulsada la tecla V
movemos temporalmente el Pivote.

Los pivotes de los objetos se suelen


colocar en la parte de abajo (piso)
Los pivotes se definen desde el
programa de modelado, no
directamente en Unity.

Si queremos ajustar el Pivote en Unity,


es necesario colocar el objeto dentro
de un Empty (contenedor) y
manipularlo desde el contenedor.
Sección
Proyecto
(Project)
Contiene toda la información
“física” de nuestro proyecto.
PRECAUCIÓN: SI
BORRAMOS UN ASSET, LO
BORRAMOS DEL DISCO
DURO.

Por defecto todos los


elementos se colocan dentro
de la carpeta “Assets”.
www.cesarguerra.mx

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.

El prefab actúa como una plantilla a


partir de la cual se pueden crear
nuevas instancias del objeto en la
escena.

Cualquier edición hecha a un prefab


asset será inmediatamente reflejado
en todas las instancias producidas por
él, pero, también se puede anular
componentes y ajustes para cada
instancia individualmente.
Prefab con ajuste personalizado.
www.cesarguerra.mx

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.

Pueden ser reutilizados y reaplicados a


varios objetos en el proyecto.

Para crearlos, en nuestra ventana de


proyecto, hacer clic derecho,
seleccionar la opción Create y
posteriormente Material.
www.cesarguerra.mx

Materiales

(Materials
En un Material de Shader Standard:

)bien la textura base.


Albedo nos dará el color del material o

Metallic indicará la reflectividad de la


superficie y puede tomar el color del
Albedo.
www.cesarguerra.mx

Iluminación
(Illumination
)Surface: Todos los triangulos que
Terminología

component todas las mallas en la


escena, son llamadas Superfie
(surface).
Emitted Light: Es la luz
emitida
directamente en la superficie de la
escena.
Direct Light: Es la luz emitida que
llega
a una superficie de la escena y es
reflejada hacia un sensor (ejemplo: la
retina del ojo o una camara).
Indirect Light: Es una luz emitida, que
llega a una superficie de la escena al
menos 2 veces y es reflejada al sensor.
www.cesarguerra.mx

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.

Para cambiar este comportamiento,


hay que ir al menú Edit, luego a
Preferences.

En la ventana de Unity Preferences, ir


a la sección de External Tools y elegir
MonoDevelop (built-in) en la opción
de External Script Editor.
www.cesarguerra.mx

MonoDevelop
MonoDevelop es un entorno de
desarrollo integrado (IDE) libre y
gratuito.

Nos permite trabajar con el lenguaje


C#, que es el por defecto usado en
Unity.

Viene incluido dentro de las opciones


a instalar en Unity.

Resulta más ligero y práctico que


utilizar Visual Studio.
www.cesarguerra.mx

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.

Todos los scripts vinculados a objetos


(en el caso de Unity son GameObjects)
deben derivar de esta clase para
poder aprovechar eventos y funciones
útiles para la manipulación de
elementos de nuestro proyecto.

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.

Para hacerlo, simplemente hay que


arrastrar y soltar el script hacia el
Inspector con el elemento deseado (ya
sea visualmente en Scene View,
textualmente en Hierarchy Window o
Inspector Window).
www.cesarguerra.mx
using UnityEngine;
using System.Collections;

Probando public class AwakeAndStart : MonoBehaviour {


Hilos de
void Awake ()
Ejecución {
Debug.Log("Aquí se llama a Awake."); Script activado
Start y Awake }
Mediante el siguiente código void Start ()
podemos comprobar cuando es {
llamado cada elemento y en Debug.Log("Aquí se llama a Start.");
que orden. }
Podemos darnos cuenta que al void Update (){
deshabilitar el script en el Script desactivado
inspector, ya no se ejecuta Start, }
sin embargo Awake si que se }
ejecuta.
www.cesarguerra.mx
using UnityEngine;
using System.Collections;

Probando public class AwakeAndStart : MonoBehaviour {


Hilos de private float m_Counter;
Ejecución void Awake ()
{
Update }
Debug.Log("Aquí se llama a Awake.");
Modificaremos ligeramente el
Script para demostrar la void Start ()
ejecución de Update. {
Debug.Log("Aquí se llama a Start.");
}
void Update (){
m_Counter = m_Counter + 1;
Debug.Log("Contador: " + m_Counter);
}
}
www.cesarguerra.mx

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;

Traslación private bool m_isGoing;


// Use this for
initialization
Script que realiza la traslación void Start ()
{ m_isGoing =
(desplazamiento) de un objeto true;
m_Origin =
en orientación global o local, transform.positio
n;
controlando la velocidad, }
dirección inicial del // Update is called
once per frame
desplazamiento y distancia void Update () {
máxima, para al alcanzarla, if (Vector3.Distance (m_Origin, transform.position) < m_MaxDistance)
regresar hacia el punto de { transform.Translate (
(m_Direction * (m_isGoing ? 1 : -1)) * m_Velocity * Time.deltaTime,
origen. (m_GlobalOrientation ? Space.World : Space.Self));
} else {
m_Origin = transform.position;
m_isGoing = !m_isGoing;
}
}
}
www.cesarguerra.mx
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ScaleObject :
MonoBehaviour {
//public

Ejemplo: public float m_MaxScale;


public float m_MinScale;
public float m_Velocity;

Script de public bool m_ScaleX;


public bool m_ScaleY;
public bool m_ScaleZ;
Escala // Use this
initialization
for

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

También podría gustarte