Logo Studenta

CURSO-DE-PROGRAMACION-desde-cero-con-unity-pdf

¡Este material tiene más páginas!

Vista previa del material en texto

CURSO DE PROGRAMACIÓN 
DESDE CERO CON UNITY 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
¡BIENVENIDOS! 
TEMARIO 
Primera clase 
• Conceptos básicos de programación orientada a objetos. 
• Scripting en Unity (C#). 
• Lógica de programación en Unity (Clase Monobehaviour). 
 
Segunda clase 
• Métodos propios de Monobehaviour (Start, Update, etc.). 
• Inputs (teclado, ratón, mando). 
• Programación de controlador de personaje. 
 
Tercera clase 
• Bases de datos (listas). 
• Optimización de recursos (pooling). 
• Implementar animaciones (Animator de Unity). 
 
Cuarta clase 
• Inteligencia artificial (IA) básica. 
• Implementación de la interfaz de usuario (Canvas). 
• Buenas prácticas de programación y “Unity tips”. 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
POO 
La programación orientada a objetos (POO) es un 
paradigma de programación que viene a innovar la forma de 
obtener resultados. Los objetos manipulan los datos de 
entrada para la obtención de datos de salida específicos, 
donde cada objeto ofrece una funcionalidad especial. 
 
 Crear objetos con atributos y métodos para manipularlos. 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
LENGUAJES DE PROG. 
Un lenguaje de programación es un lenguaje formal 
diseñado para realizar procesos que pueden ser llevados a 
cabo por máquinas como las computadoras. 
 
 Idioma en el que le hablamos a una máquina. 
• C++ 
• C#  Unity 
• Eiffel 
• Java 
• Javascript  Unity 
• Perl 
• Python 
• Ruby 
• Visual Basic .Net 
• … 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
CLASES 
Una clase es un modelo que define un conjunto de 
variables (el estado), y métodos apropiados para operar con 
dichos datos (el comportamiento). Cada objeto creado a partir 
de la clase se denomina instancia de la clase. 
 
 Define un objeto con sus variables y métodos. 
class MiClase 
{ 
// Variables 
int x, y; 
 
// Métodos 
void MiMetodo() 
{ 
 // Contenido del método 
} 
} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
VARIABLES I 
Una variable está formada por un espacio en el sistema de 
almacenaje y un nombre simbólico (un identificador) que está 
asociado a dicho espacio. Ese espacio contiene un valor. 
 
 Almacenan información. 
Tipos de datos (primitivos) 
• Entero: int  -2, -1, 0, 1, 2… 
• Real: float  14.56, -0.27, 3.0… 
• Cadena: string  “¡hola mundo!”, “123”, “”. 
• Booleano (lógico): bool  true, false. 
 
Ámbito de una variable 
• Global Privada (private) 
• Global Pública (public) 
• Local 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
VARIABLES II 
Declaración e inicialización 
• bool test; 
• int x = 1; 
• float y = x; 
• string cad = “Prueba de cadena de texto”; 
 
Valores por defecto (variables globales) 
• bool  false 
• int  0 
• float  0.0 
• string  “” 
 
Manipular variables (+,-,*,/,%,==,>,<,>=,<=, &&, ||) 
• x = x + 1; 
• y = (x / 2) * (y – 5) 
• cad = “Encadena ” + cad + “ con ” + cad2; 
• test = (x > 1) && (y <= 5); 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
MÉTODOS I 
Un método consiste de una serie de sentencias para llevar 
a cabo una acción, un juego de parámetros de entrada que 
regularán dicha acción con un posible valor de salida (o valor 
de retorno) de algún tipo. 
 
 Nos permiten manipular las variables y/o devolver un valor. 
 
Ámbito de un método 
• Privado (private) 
• Público (public) 
 
Valor devuelto 
• void metodoSinDevolver() { 
 // acciones 
 } 
• int metodoDevuelveEntero(){ 
 // acciones 
 return n;  Siendo „n‟ de tipo int. 
 } 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
MÉTODOS II 
Parámetros  un parámetro es un tipo de variable que es 
recibida por un método. 
• public void Test() 
• public void Test(int x) 
• public void Test(float x, int y) 
• public int Suma(int x, int y) 
• public bool Combo(int x, float y, string s, bool a) 
 
Variables locales en métodos 
public void Test(int x){ 
 int y = x; // Variable local 
 } 
 
Métodos llaman a otros métodos 
public void Test2(){ 
 int z = 4; 
 Test(15); 
 Test(z); 
} 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO DE CLASE 
public class Ejemplo 
{ 
 public int posX, posY; 
private bool test; 
 
private void Modificar(int n) 
{ 
 posX = posX - n; 
 posY = posY * (n-1); 
 test = posX <= posY; 
} 
 
public int Sumar() 
{ 
 int temp = posX + posY; 
 Modificar(2); 
 return temp; 
} 
} 
 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
CLASES MONOBEHAVIOUR 
En Unity las clases pueden extender (herencia) de 
Monobehaviour para que entren dentro de la lógica de 
funcionamiento del motor. 
 
 Monobehaviour transforma una clase en un script de Unity. 
 La clase se transforma en un comportamiento y/o una 
característica del objeto. 
 
public class ClaseEnUnity : Monobehaviour 
{ 
 // Variables Globales 
 
 // Métodos propios de Monobehaviour 
 
 // Otros métodos 
} 
 
 Usaremos Monodevelop con lenguaje C# para los scripts. 
 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO MONOBEHAVIOURpublic class Health: Monobehaviour{ 
 public int health; 
 private int _initialHealth; 
 
 void Start(){ 
 _initialHealth = health; 
 TakeDamage(25); 
 Debug.Log(“Health: ” + GetHealthRatio + " %"); 
 } 
 
 public void TakeDamage(int damage){ 
 health = health – damage; 
 Debug.Log(“Character attacked ” + damage); 
 } 
 
public float GetHealthRatio(){ 
return ((float)health/_initialHealth) * 100; 
} 
} 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
SENTENCIA IF 
Se utiliza para comprobar una condición. Si la condición es 
verdadera entonces se procesa un bloque de sentencias 
(bloque if), sino se procesa otro bloque de sentencias 
alternativas (llamado bloque else). 
 
 Comprueba condiciones para ejecutar un trozo de código. 
 
if(condición) 
{ 
 // Bloque if 
} 
else if (condición) opcional 
{ 
 // Bloque else if 
} 
else  opcional 
{ 
 // Bloque else 
} 
 
if(x > 1) 
{ 
 Debug.Log(1); 
} 
else if (x <= -2 || x == 0) 
{ 
 Debug.Log(2); 
} 
else 
{ 
 Debug.Log(3); 
} 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
SENTENCIA FOR 
Es una sentencia que implementa un bucle capaz de 
repetir un grupo de sentencias un número determinado de 
veces. 
 
 Puede repetir un bloque de código varias veces. 
 
for (int x = valor inicial; condición; incremento) 
{ 
 // Bloque for 
} 
 
for(int i = 0; i < 10; i ++) 
{ 
 Debug.Log(i); 
} 
 
for(int i = 10; i >= 0; i - -){} 
for(int i = 0; i < 50; i += 10){} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
SENTENCIA SWITCH 
Se utiliza para agilizar la toma de decisiones múltiples; 
trabaja de la misma manera que lo harían sucesivos if, if else. 
 
 Si vas a tener varios “if else” para valores determinados 
mejor usar un switch. 
switch(variable){ 
case valor1: 
accion1; 
break; 
… 
case valorN: 
accionN; 
break; 
default:  opcional 
accionD; 
break; 
} 
switch(x){ 
case 1: 
 Debug.Log(“Uno”); 
 break; 
case 2: 
case 4: 
 Debug.Log(“Pares”); 
 break; 
default: 
 Debug.Log(“Otros”); 
 break; 
} 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
SENTENCIA WHILE 
 Ejecuta indefinidamente un bloque de código mientras una 
condición sea verdadera. 
 ¡Cuidado con los bucles infinitos! 
while(condición) 
{ 
 // Bloque while 
 // Actualizar condición. 
} 
 
do{ 
 // Bloque do while 
 // Actualizar condición. 
}while(condicion); 
int x; 
 
while(x < 5) 
{ 
 Debug.Log(x); 
 x = x + 1; 
} 
 
do{ 
Debug.Log(x); 
x = x + 1; 
}while(x < 5); 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO SENTENCIAS I 
public class Health: Monobehaviour 
{ 
… 
public bool invulneravility; 
 
void Start() 
{ 
 _initialHealth = health; 
TakeDamage(25); 
SetInvulneravility(true); 
TakeDamage(50); 
SetInvulneravility(false); 
MultiAttack(10, 4); 
} 
 
public void SetInvulneravility(bool enable) 
{ 
invulneravility = enable; 
} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO SENTENCIAS II 
public void TakeDamage(int damage) 
{ 
if(invulneravility == false) 
{ 
health = health - damage; 
Debug.Log(“Character attacked ” + damage); 
} 
 } 
 
public void MultiAttack(int damage, int numAttacks) 
{ 
for(int i = 0; i < numAttacks; i++) 
{ 
TakeDamage(damage); 
} 
} 
… 
} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
ENUMERADOS 
Proporciona una manera eficaz de definir un conjunto de 
constantes integrales con nombre que pueden asignarse a 
una variable. 
 
 Colecciones de valores que puede tener una variable. 
 
public enum <NombreDelEnum> 
{ 
valor1, valor2, …, valorN 
} 
 
public enum Colores 
{ 
Azul, Amarillo, Rojo, Verde 
} 
 
Colores color1 = Colores.Azul; 
Colores color2 = (Colores) 3; 
int n = (int) color1; 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
COMPONENTES 
 Añadimos un componente a un objeto por cada 
característica o comportamiento. 
 
 Nos comunicamos desde un componente con otro usando 
GetComponent<Class>() si está en el mismo objeto. 
 
public class A : Monobehaviour{ 
public B b; 
void Start() 
{ 
b = GetComponent<B>(); 
Debug.Log(b.x); 
} 
} 
 
public class B : Monobehaviour{ 
public int x; 
private int y; 
} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO ENUMERADOS I 
public class Character: Monobehaviour 
{ 
public enum CharacterRace 
{ 
human, dwarf, elf 
} 
 
public string characterName; 
public CharacterRace race; 
 
public string GetDescription() 
 { 
return (characterName + " the " + race); 
} 
} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EJEMPLO ENUMERADOS II 
public class Health : MonoBehaviour { 
 … 
 void Start(){ 
Character _character = GetComponent<Character>(); 
 Debug.Log(_character.GetDescription()); 
 switch(_character.race) 
{ 
 case Character.CharacterRace.human: 
 TakeDamage(25); 
 break; 
 case Character.CharacterRace.dwarf: 
 MultiAttack(10, 4); 
 break; 
 case Character.CharacterRace.elf: 
 SetInvulneravility(true); 
TakeDamage(50); 
 break; 
 } 
 …} 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
PRÁCTICA 
 Método en Health para recuperar salud. 
 La raza determina la salud inicial. 
 Añadir un escudo al personaje que reduce el daño entrante. 
 
 Juego de gestión de una ciudad en la que tenemos unos 
recursos con los que construimos casas para hacer feliz a 
una población que aumenta poco a poco. El objetivo es 
alcanzar una felicidad elevada de la población o bien 
conseguir mucha riqueza. 
 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
RECURSOS 
 Componente que gestiona los recursos existentes. 
 Hay tres recursos: madera, piedra y oro. 
 Método para actualizar las cantidades de los recursos. 
 Método para comprobar si hay suficientes recursos. 
 
 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
EDIFICIOS 
 Componente que gestiona los edificios de la ciudad. 
 Almacena el número de casas de la ciudad. 
 Establece el coste de cada recurso para construir una casa. 
 Indica si la ciudad tiene o no iglesia. 
 Método para construir una casa, teniendo en cuenta que si 
hay una iglesia las casas cuestan la mitad. 
 Método para construir una iglesia, teniendo en cuenta que 
cuesta el triple que una casa. 
 Antes de construir un edificio hay que comprobar que se 
tienen los recursos necesarios. 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
POBLACIÓN 
 Componente que gestiona la población de la ciudad. 
 Almacena el número de personas de la ciudad. 
 Establece la probabilidad de un nuevo nacimiento. 
 Felicidad con tres niveles: alta, media y baja. 
 Método para aumentar/disminuir la población. 
 Método para repoblar la ciudad: por cada 2 ciudadanos hay 
una probabilidad (establecida arriba) de aumentar en 1 la 
población. 
 Método para actualizar la felicidad, sabiendo que cada 
casa aloja a 4 personas: 
• Felicidad alta: Al menos el 80% tiene casa. 
• Felicidad media: Al menos el 50% tiene casa. 
• Felicidad baja: Menos del 50% tiene casa. 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica 
 
 
CIUDAD 
 Componente que gestiona la ciudad. 
 Se comunica con todos los componentes. 
 Establece el final del juego. 
 El juego termina en tres casos: 
• La felicidad es alta y el oro es superior a 250. 
• La felicidad es media y el oro es superior a 500. 
• La felicidad es baja, hay una iglesia y el oro es 
superior a 750. 
Introducción 
Temario 
Poo 
Lenguajes de prog. 
Clases 
Variables 
Métodos 
Ejemplo de clase 
Clases Monobehaviour 
Ejemplo 
Monobehaviour 
Sentencia IF 
Sentencia FOR 
Sentencia SWITCH 
Sentencia WHILE 
Ejemplo sentencias 
Enumerados 
Componentes 
Ejemplo enumerados 
Práctica