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