resumen unity
resumen unity
Variables
Son los contenedores de los valores que almacena y utiliza la computadora/programa. Es
un contenedor donde guardo el dato.
En C y C# hay 3 características:
- nombre (identificador)
- tipo (entero, caracter, string, bool o número real)
- valor (contenido)
Declaración de variable:
Declaración: tipo nombre
Inicializarla: tipo nombre = valor
Asignación de valor a una variable: nombre = valor
LAS VARIABLES SÓLO TIENEN UN VALOR, SE TOMA EL ÚLTIMO VALOR
Todas las variables tienen parámetros que se ponen entre (). Si se pone la variable y ()
vacío, es porque no tiene parámetros.
1
tipos de variables: DIFERENCIA
La diferencia entre una variable pública y una privada es que la primera es accesible desde
cualquier lugar del código, mientras que la segunda sólo es accesible dentro de la misma
Palabras reservadas
Hay un grupo de palabras que están reservadas y preasignadas para realizar determinada
tarea. No voy a poder nombrar una variable con estas palabras.
Suelen ser pocas (no mucho más de 50).
Comentarios
El programador/a querrá incluir en su código algunas palabras que puedan ser interpretadas
por otro humano pero no por el compilador.
El lenguaje C++ soporta 2 manera de insertar comentarios:
- Comentarios en una única línea: // comment
- Bloque de comentario: /* comment */
El tipo de dato le indica al compilador cuál será el dominio de una variable (todos los valores
posibles que podrá almacenar).
En particular, el tipo numérico es el conjunto de todos los valores numéricos.
Estos pueden representarse en dos formas distintas:
-Tipo numérico entero (integer)
-Tipo numérico real (real / float)
Además de los modificadores corto y largo, se pueden considerar sin signo (unsigned) y con
signo (signed).
-Sin signo: 0 .. 65.535 || 4294967296
Los números reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un
número real consta de un entero y una parte decimal.
2
Ejemplos: 0.08 –52.321
3739.41 3.7452
–8.12 5.0
Operadores aritméticos
Un operador es un símbolo utilizado por un lenguaje de programación para operar valores.
Por ejemplo el operador de asignación es el signo “=”.
ESTA PARTE ES SUMA(+) / RESTA(-) / DIVISIÓN(/) / MULTIPLICACIÓN(*)
Paréntesis
Prioridades
Al igual que en las ciencias matemáticas, en programación la multiplicación y la división es
prioritaria por sobre la suma y resta.
E.g.: 2 + 3 * 5 = ?
Paréntesis
El uso de paréntesis, permite priorizar que sub-expresiones son calculadas primero.
E.g.: (2 + 3) * 5 = ?
3
Tipos de datos de carácter y de cadena
Ejemplos:
-'Choose your destiny!'
-'6 de Noviembre de 1985'
-“Sr. Ramirez”
Tipos de datos en C#
Existen varios tipos de datos más a los primitivos originales (no se llaman así, es para
distinguirlos de los que aparecieron en C original) que fueron agregados a C# para
complementar los faltantes en la lógica moderna.
Variables “Nullable” En C#, los tipos de valor no pueden ser null por defecto. Sin embargo,
usando el operador ?, puedes hacer que un tipo de valor sea nullable
4
Tipos Punto flotante
Tipo Booleanos
ASCII CODE
La computadora guarda los caracteres como números.
A cada caracter le corresponde un número y viceversa.
En general, las computadoras utilizan un estándar denominado ASCII (American Standard
Code for Information Interchange). El código ASCII provee de 256 caracteres, pero nos
vamos a interesar en los primeros 128.
En particular, en este estándar las letras están ordenadas de la misma manera que el
Alfabeto Latino.
ASCII es extendido por otro estándar internacional denominado UNICODE.
5
Escape characters
Las secuencias de escape, o “escape characters”, son caracteres que tienen funcionalidades
especiales dentro de una cadena. El más utilizado es \n que nos permite realizar un salto de
línea:
#include <iostream>
int main()
{
std : : printf ("Iniciando programa...\n¡Bienvenido!\nHola Mundo");
}
Indentación
Indentación se refiere al uso de espacios, tabuladores y saltos de línea para hacer que la
lectura del código sea más sencilla, y por consiguiente la capacidad de comprensión y
mantenimiento de este.
Es una excelente práctica para facilitar la lectura del código por OTRO/A PROGRAMADOR/A.
Code Styling
Un estilo de código o Code Style, es una serie de reglas o guías para la escritura de código.
Son convenciones que pueden ser propuestas por un lenguaje, tecnología, framework o
grupo de trabajo para facilitar la lectura del código y su comprensión.
Convenciones para nombres de variables y funciones (Naming convention):
-Camel Case: myCustomVariable
-Pascal Case: MyCustomVariable
-Hungarian Notation: nMyCustomVariable
6
Unidad 2: funciones condicionales. Entrada y salida de datos
Funciones
Matemáticamente una función es una operación que toma uno o más valores llamados
argumentos y produce un valor denominado resultado:
funciones Declaración
nombreFuncion([nombreArgumento], [nombreArgumento]...]);
Procedimientos
Un procedimiento o subrutina es un subprograma que ejecuta un proceso específico.
Ningún valor está asociado con el nombre del procedimiento, por consiguiente, no puede
ocurrir en una expresión.
Cuando se invoca el procedimiento, los pasos que lo definen se ejecutan y a continuación se
devuelve el control al programa que le llamó.
7
Librerías
Las funciones pueden encontrarse en librerías o formar parte de nuestro código, es decir,
podemos programar nuestras propias funciones.
Cada lenguaje ofrece un conjunto de librerías con funciones para hacer diversas tareas
(librería matemática, de entrada/salida, de strings, etc.).
Una librería es un conjunto de implementaciones funcionales y ya codificadas que ofrece
una interfaz para la funcionalidad que se invoca.
Permiten hacer nuestros programas más modulares y reutilizables, facilitando además
crear programas con funcionalidades complejas en pocas líneas de código.
Librería Incorporar
using <nombreLibrería>;
Ejemplo:
using System;
using System.Collections.Generic;
Output
Una vez procesada una cierta información (el resultado del cálculo, el puntaje de un usuario,
un “frame” de video de la escena de un juego), necesitamos un canal que envíe esta
información al usuario en algún periférico asociado, como por ejemplo una pantalla o un
parlante.
Console.WriteLine() en particular, es un canal que nos permite mostrar valores por consola.
Console.WriteLine() se encarga de dos tareas:
-Convertir los valores de un determinado tipo a una representación que sea aceptable para el
humano.
-Transferir los valores convertidos a la pantalla.
int edad = 35;
Console.WriteLine(edad);
Input
Console.ReadLine(); es el método que nos provee la STL para el ingreso de variables por
consola. Se utiliza de la siguiente manera:
int edad;
Console.WriteLine("Por favor ingrese su edad: ");
// Se asigna el valor ingresado a la variable “edad”
edad = Console.ReadLine();
8
Propiedades estáticas
Puedes usar propiedades estáticas para encapsular acceso y modificación de valores:
public class ConfiguracionGlobal
{
public static string NombreAplicacion { get; set; } = "MiApp";
public static int Version { get; set; } = 1;
}
Condicionales
Un programador escribe un programa que hace preguntas. La computadora ejecuta el
programa y dará una respuesta.
Las computadoras conocen solo 2 tipos de respuestas: verdadero o false (true / false).
Para realizar estas preguntas, C# provee de una serie de operadores. El resultado de esta
operación, devolverá una variable del tipo “booleano”, que se corresponde al tipo “bool”.
Operador ternario
El operador ternario nos permite dada una condición devolver resultados distintos si esta es
verdadera o falsa.
condicion ? resultado_verdadero : resultado_falso
Ejemplos de uso:
contadorDeOvejas++;
diasParaElProximoFeriado--;
9
Unidad 3: Herramientas
Unity
•Basado en componentes
2D y 3D
Unreal Engine
Godot
2D y 3D
10
Modelado 3D: Blender, 3D Studio max, Maya, Cinema 4D, ZBrush, Houdini
ZBrush: Escultura. Es el mejor por lejos en esto porque optimiza bien el manejo de muchos
polígonos.
11
Unidad 4. Herramientas de 3D - Texturas y geometria
Unity contiene algunos shaders integrados que siempre están disponible en su proyecto (por
ejemplo, el Standard shader).
Nodo difuso: un mapa difuso contiene la información del color de la textura. Define qué
color original tendrá la textura en una cierta posición. Usualmente es mate.
Nodo especular: un mapa especular define cuán fuerte brillará la superficie de la textura en
una cierta posición. La mayoría de los motores de render utilizan esta información para
definir la apariencia de los reflejos especulares. Sería como el sombreado.
Nodo displacement: Los mapas de desplazamiento son similares a los mapas de relieve
(bump), pero almacenan información de altura y generan profundidad real al añadir
geometría cuando se renderiza.
Ambient occlusion:La oclusión ambiental es un método para aproximar qué tan brillante
debería ser la luz que incide sobre una parte específica de una superficie. Se utiliza para
simular sombras suaves en áreas donde la luz llega menos. En Photoshop, se coloca sobre
la capa difusa en "modo multiplicar" para integrarlo con el color base de la textura.
12
La oclusión ambiental es un método de iluminación y renderizado que se utiliza en escenas
3D para calcular la exposición de un punto en la escena, como sería el mapa de un juego, a
la iluminación ambiental. De este modo, la oclusión ambiental sirve para calcular las
sombras “globales” que surgirían de cualquier otro método de iluminación global que se
utilice en la misma escena, proporcionando un sombreado base sobre el que trabajar.
Normal: Los canales rojo, verde y azul de la imagen se utilizan para controlar la dirección de
la normal de cada píxel. El "normal wrap" simula tanto la dirección en la que la normal está
orientada como la altura, lo que proporciona un efecto más realista en la superficie, ya que
añade detalles en la forma en que la luz interactúa con la textura.
Caracteristicas shaders:
Diffuse: color base.
Roughness: aspereza. Menos roughness más “metalico”.
Normal: fingir relieve.
Mapa UV
Se “desdobla” la figura 3D sobre un plano 2D, y así se proyecta la textura.El mapeo UV es el
proceso de proyectar la topologia de una malla de un modelo 3D a un espacio 2D para
texturizar aún más el modelo
Si tuviera que aplicar una imagen a las UV y luego renderizar, la textura no se mostraría de
forma predeterminada. Entonces, para renderizar una imagen, debe:
Para crear un Material, debe hacer click en Agregar Nuevo Material en el contexto de
Sombreado.
Hay dos formas de decirle a Blender que use la textura UV al renderizar; la manera rápida y
la manera correcta.
La forma correcta es usar Desplegar UV para generar manualmente las coordenadas UV.
Para usar el mapeo UV, use el Nodo Coordenadas de Texturizado (salida UV) o el Nodo
Mapa UV y seleccione el mapa UV a usar, «UVMap» por defecto.
Blender
Modo objeto: permite seleccionar cada objeto por separado.
Modo edicion: permite editar el objeto seleccionado.
Subidivision: permite generar más geometria y curvar la malla, partiendo de una malla de
pocos poligonos.
13
La clave en el 3D es optimizar, Para videojuegos / interactivos, es fundamental mantener una
cantidad baja de polígonos. Para dispositivos móviles, en algún punto entre 300 y 1500
polígonos por mesh va a dar buenos resultados, dónde para plataformas de escritorio el
rango ideal está cerca de 1500 a 4000.
Tipos de poligonos
En general, lo más conveniente es utilizar Quads (4). Los videojuegos los transforman a Tris
(3), pero es fundamental partir de una buena topología. Evitar N-gons(5)
ctrl f vs ctrl j
¿Que es unity?
14
experiencias en 2D y 3D.
Ofrece una plataforma versátil y potente para diseñar y programar juegos, simulaciones y
aplicaciones en realidad aumentada y virtual. Su popularidad proviene de su facilidad de
uso, flexibilidad y soporte multiplataforma.
Ofrece una interfaz accesible y un ecosistema amplio, en contraste con Unreal, que está
más centrado en gráficos avanzados y no tiene una integración AR tan fluida.
¿Que es vuforia?
Descargar Unity Hub: Visita el sitio web oficial de Unity y descarga el instalador de Unity
Hub.
Ejecutar el instalador: Abre el archivo descargado y sigue las instrucciones en pantalla para
instalar Unity Hub en tu computadora.
Iniciar Unity Hub: Una vez instalado, abre Unity Hub y crea una cuenta o inicia sesión con tu
cuenta existente.
Agregar versiones de Unity: Dentro de Unity Hub, puedes instalar diferentes versiones de
Unity según tus necesidades para comenzar a trabajar en tus proyecto.
Se puede configurar la licencia gratuita (Unity Personal) poniendo que tus ingresos son
menores a 100.000 USD.
Build SupportUna build es nuestra aplicación ejecutable. Hacer builds de Android es más
fácil que iOS, ya que esta última opción requiere utilizar una Mac para completarla.
Para crear un proyecto en Unity, abrí Unity Hub y seleccioná "Nuevo Proyecto". Elegí la
plantilla según el tipo de desarrollo, como 2D o 3D. Poné un nombre al proyecto y elegí la
ubicación donde lo querés guardar. Finalmente, hacé clic en "Crear" para generar el entorno
de trabajo adecuado. Nosotros usaremos 3D.
15
Nota: Esta cuenta no es una nube, los proyectos se guardan localmente. Para transportarlos,
se puede usar un disco externo, un pendrive con bastante espacio, o bien exportar pequeños
paquetes con algunos objetos para abrirlos desde una computadora que ya tenga el
proyecto (lo vemos más adelante).
UNITY
Jerarquía
El panel de Jerarquía en Unity muestra todos los objetos presentes en tu escena. Acá podés
ver y organizar los objetos en una estructura de árbol, lo que permite agruparlos y gestionar
su relación.
Los objetos pueden ser “hijos” unos de otros. Es decir, que si su objeto padre se mueve, ellos
también.
El panel de Proyecto tiene todos nuestros assets. Esto incluye modelos 3D, texturas,
materiales, etc.
Escena
Inspector
Contiene todas las propiedades y parámetros que modificaremos, así como los
componentes.
Game View
Es una pestaña al lado de Scene, y nos muestra la visión de la cámara.
Game objects
Todos los elementos de nuestra escena son GameObjects. Podemos agregar objetos
básicos para prototipar.
16
Escenas
Cada escena de Unity (como por ejemplo, los niveles de un videojuego) son archivos aparte.
Importar
Podemos arrastrar nuestro archivo fbx al panel de proyecto. Si traemos un archivo .blend, lo
editamos en blender y repercute en Unity en tiempo real
Import settings
Podemos remapear los materiales según los que trajo, reemplazandolos por materiales de
Unity.
También podemos extraer los que trajo y utilizarlos.
Mover: W. se puede mover como un juego con wasd y el mouse para girar la camara.
Rotar, E
Escalar: R.
Enfocar objeto: F para encuadrar en el viewport y Ctrl + Shift + F hace que el objeto camara
lo enfoque.
Orbitar objeto: alt + arrastrar.
Componentes
Transformar:
Define la Posición, Rotación y Escala del objeto. Tiene en cuenta su Origen.
Mesh renderer
Animator
Requiere de un Animator Controller, que dentro tendrá los Animation Clips (Lo veremos más
adelante)
17
Material
Al aplicarlo a un material aparece como un componente.
Otros componentes
Collider:
Crea una caja (u otra figura) que marca un límite a su alrededor.
Esto hace que nos choquemos con ese objeto, o bien que al atravesarlo ocurra algo (Este
segundo caso es que sea Trigger)
Audio source
Podemos configurarlo para que los objetos emitan sonidos.
Script
Cuando creemos scripts, se pondrán al objeto como componentes.
Materiales
Crear materiales:
Podemos crear materiales o usar los extraídos del modelo.
Propiedades: Acá podemos poner los mapas de textura que ya estuvimos trabajando.
Para colocar materiales tuyos tenes que tener el albedo, metallic, normal, height y ambient
oclussion. estos mapas se colocan y activamos el normal map, Hace falta marcar la imagen
como tal, seleccionandola en el panel de Proyecto y viendo su inspector.
Animación
Blender
Unity
Ventajas: Unity permite crear animaciones básicas directamente dentro del motor, lo cual
puede ser conveniente para animaciones simples o ajustes rápidos. También es útil para
animaciones que deben integrarse estrechamente con la lógica del juego o la interacción en
tiempo real.
18
para sacar la ventana d animacion ponemos CTRL 6
Crear animation clip: es donde se guardan los keyframes. Con él se crea el animation
controller
Hay que seterar eso en el componente como un animator.
Estas condiciones dependen de triggers y otras configuraciones que veremos más adelante.
¿Y si animo en Blender?
Se sincronizará acá. Puedo usar este clip, y crear el animation controller y el componente
animator a mano.
APK son las siglas de Android Application Package y es uno de los términos que más se
repiten en cualquier proyecto de apps. Se trata de un archivo ejecutable que contiene todos
los datos que se necesitan para instalar y hacer funcionar una aplicación Android.
19