Curso de Unity Creación de RPG y Programación con C# Basado en el curso: https://www.udemy.com/course/unity2019/ Dictado por el Profesor: Juan Gabriel Gomila Salas Creado por: Victor Reyes ALIAS:Cabomaster Indice 1 Creando el Proyecto Abrimos Unity Hub ADD:Sirve para agregar un proyecto ya existente. NEW:Sirve para crear un nuevo proyecto. 2 2D: Sirve para crear proyectos en 2D 3D: Sirve para crear proyectos en 3D High Definition RP: Es un proyecto en 3D optimizado para dispositivos con maxima capacidad grafica Universal Render RP: Ni idea. Proyect Name:Nombre del proyecto. Location:Donde se guardaran el proyecto y sus carpetas. Notas Al momento de crear el nombre para el proyecto usar la técnica de CamelCase. CamelCase consiste en poner todas las palabras juntas y a su ves cada primera letra de una palabra en mayúsculas por ejemplo; MyFirstProyect 3 INTERFAZ DE UNITY La ventana del Proyecto: Notas 1-Al crear una carpeta en Assets siempre poner barra baja ( _ ) , para que las carpetas más usadas aparezcan primero. 2-Cualquier cosa que pueda formar parte de el juego debe estar en la carpeta assets. 3-Crear siempre las carpetas en la carpeta de assets jamás desde windows, lo mismo si hay que eliminar una carpeta o archivo. The Project Window (ventana del proyecto) muestra sus assets de librería que están disponibles para ser usados. Cuando usted importe sus assets a su proyecto, estos aparecen aquí. 4 La Scene View (vista de escena) La Scene View le permite a usted una navegación visual y editar su escena. La scene view puede mostrar una perspectiva 2D o 3D dependiendo en el tipo de proyecto en el que esté trabajando La ventana de Jerarquía Notas Cuando estas en modo Game no se puede editar, por la tanto para saber si se esta en ese modo se recomienda ponerle un color al modo play, para hacerlo se debe ir a: Edit/preferences/Colors/ y cambiar el color de la opción Playmode tint. La ventana de jerarquía: es una representación de texto jerárquico de cada objeto en la escena. Cada elemento en la escena tiene una entrada en la jerarquía, por lo que las dos ventanas están inherentemente vinculadas. La jerarquía revela la estructura de cómo los objetos están agrupados el uno al otro. 5 La ventana del Inspector La ventana del inspector le permite a usted visualizar y editar 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 va a variar. La barra de herramientas La barra de herramientas proporciona un acceso a las características más esenciales para trabajar. En la izquierda contiene las herramientas básicas para manipular la scene view y los objetos dentro de esta. En el centro están los controles de reproducción, pausa, y pasos. Los botones a la derecha le dan acceso a sus servicios de Unity Cloud y su cuenta de Unity, seguido por un menú de visibilidad de capas, y finalmente el menú del layout del editor (que proporciona algunos diseños alternativos para la ventana del editor, y le permite a usted guardar sus propios layouts personalizados). La barra de herramienta no es una ventana, y solamente es parte de la interfaz de Unity que usted no puede re-ajusta. Sirve para mover o rotar, con el clic izquierdo mueve y con el derecho rota. Con clic izquierdo y la tecla Alt pulsada rotas sobre un punto especifico, con el clic derecho te acercas y alejas del punto. También se puede hacer con clic derecho presionado y las teclas W, S acercar y alejar y A, D Izquierda Derecha Sirve para mover objetos. La flecha roja sirve para mover sobre el eje de las Xs positivo y negativo La de color verde es el eje de las Ys Arriba, Abajo. La de color azul en el eje de las Zs Frente, Atrás. Play: Sirve para probar el juego. Pause:Pausa el modo juego. Adelantar: Sirve para adelantar frame por frame. Sirve para colaborar con otras personas. En caso de que seas mas de 2 se debe conseguir unity de pago. Con CTRL presionado se mueve por unidad. 6 Sirve para rotar sobre los ejes. Con CTRL presionado se rota en grados de 15 en 15 grados Sirve para guardar proyectos en nube de Unity. Detalles de cuenta de Unity Sirve para estirar en los ejes. Y con el del medio estira todos los ejes al mismo tiempo Sirve para hacer interfaces graficas de usuarios, o en juegos 2D para los Sprits Layers Aquí se puede modificar las ventanas que conforman la interfaz de Unity Sirve para hacer rotación, mover al mismo tiempo ¿?? Sirven para intercambiar entre si las selecciones que se hacen en el centro de los objetos o en el punto de pivote. Center: Es el centro sin más. Pivote: Es el punto respecto del cual los objetos se posicionan o se rotan. Nota Cuando estemos trabajando con un Objeto y lo perdamos de vista podemos apretar F para hacer foco en él, o en su defecto doble clic en el objeto en Jerarquía 7 COMO CREAR Y NOMBRAR UN SCRIPT Para crear un script se debe hacer click derecho dentro de la carpeta de script, luego en Create/C# Script. Nota 1 ¡IMPORTANTE ¡ Al momento de crear el script. Se recomienda cambiarle el nombre en seguida de crearlo. Porque el nombre de el fichero y el nombre que aparecerá dentro de visual estudio como la clase o (Class) han de ser los mismos, si los nombres son distintos puede causar errores. Nota 2 Los scripts también han de ser creados con la técnica CamelCase. La unidad más básica que hay en programación es una variable, todo empieza con variables, cada variable tendrá información, “tipo de datos (que tipo de datos estamos guardando)” y el valor Puede guardar una palabra (strings) Un numero decimal entero (int), Números con coma (float) para los floats se debe poner f al final del número ejemplo: ( public float number = 2.4f;) También pueden guardar boolones (bool) que es para (true o false) 8 INTRODUCCION EN LA PROGAMACION Variables en Programación Ejercicio de C# Script Crear un script en la carpeta de scripts, abrirlo y poner el siguiente código: (El código que hay que poner este marcado en amarillo, el resto ya viene con el script) using System.Collections; using System.Collections.Generic; using UnityEngine; public class { MyFirstScript : MonoBehaviour public int carDoors = 4; Nota 1 1-Para guardar en Visual Studio en Windows se presiona Ctrl+S. 2-Documentacion de C# Oficial de Visual Basic: https://docs.microsoft.com/eses/dotnet/csharp/programmin g-guide/ Este nombre tiene que ser igual al del fichero. // Start is called before the first frame update void Start() { Debug.Log(3 + 5); Debug.Log(carDoor - 1); Nota 2 1-La diferencia entre una variable y una constante es que la variable puede cambiar y las constantes no. 2-En matemáticas las variables se pueden representar de la siguiente forma: 2+9= 11 X=9 Y=2 Entonces se podría decir que X+Y=11 } En programación X podría ser carDoors como un ejemplo. // Update is called once per frame void Update() { } } Ahora que tenemos el script programado guardamos y nos vamos a Unity. 9 Como aplicar un Script a un GameObject Hacemos clic en Main Camera y en Inspector saldrá: Arrastramos el script y lo colocamos en Main Camera en el Inspector Así se vería el Script Colocado: Aquí aparece lo que hicimos en C# Nota 1 Nota 2 Un script por sí mismo es inútil. Un script sirve para que alguien del video juego haga algo, ese alguien es un GameObject (un objeto del videojuego) cualquier cosa que este dentro de la ventana Jerarquía es un GameObject, como por ejemplo la Main Camera. Los scripts son los únicos assets que por si mismos no pueden ser un GameOject,por lo tanto necesitan estar asociados a un GameObject. Ahora vamos activar la consola y ver que es lo que hace el script. 10 Activando la consola en unity. Para activar la consola se puede hacer como en la imagen o con Ctrl+Shift+C. En la pestaña Windows también tenemos otras ventanas que podrían servir en un foto como por ejemplo Audio , Rendering ,Animation etc. Consola Luego de tener activada la consola presionamos Play y en consola debería mostrar algo así: Notas El Debug.Log sirve para mostrar cosas por la consola . El 8 sería el Debug.Log(3 + 5); El 1 sería el Debug.Log(carDoors- 3); 11 Que es lo que hace el Script using System.Collections; using System.Collections.Generic; using UnityEngine; public class { MyFirstScript : MonoBehaviour public int carDoors = 4; // Start is called before the first frame update void Start()(El Start es un método, que como dice el comentario en verde arriba, El Start es llamado justo en el primer frame, por lo tanto los códigos que están entre las llaves línea tras línea en orden {} se ejecutan ) { Debug.Log(3 + 5); (La primera línea ejecutada) Debug.Log(carDoor - 1); (Segunda línea ejecutada) } // Update is called once per frame void Update() { } } 12 PROTOTIPADO DE VIDEOJUEGOS CON PRIMITIVAS Creando GameObjects en Jerarquía Ahora vamos a crear un cubo Para crear un cubo hacemos clic derecho dentro de la ventana Jerarquías, 3D Object/Cube. Notas Create Empty es un objeto vacío. Se puede utilizar como un Manager,Un Manager es un encargado de gobernar otras acciones de otros objetos, por ejemplo contar los puntos, determinar un GamerOver, pasar un nivel, etc. 13 METODOS EN PROGRAMACION using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyFirstScript : MonoBehaviour { public int x = 2; public int y = 3; Métodos // Start is called before the first frame update void Start() { AddTwoNumbers(); Notas } // Update is called once per frame void Update() { 1-Un método tiene el valor de retorno, el nombre, serie de datos. Ejemplo:void start () Valor de retorno: void El nombre:Start } void AddTwoNumbers() { Y la serie de datos va entre los () 2-Los métodos terminan en {} Debug.Log(x + y); } } 14 Clases en programación using System.Collections; using System.Collections.Generic; using UnityEngine; Esta es una clase en programación y se le básicamente como: class MyFirstScript ( La clase ) ( MyFirstScript ) public class MyFirstScript : MonoBehaviour { public int x = 2; public int y = 3; // Start is called before the first frame update void Start() { AddTwoNumbers(); } // Update is called once per frame void Update() { : ( que hereda) MonoBehaviour ( del comportamiento único) Notas 1-En general puede haber muchos comportamientos. Ejemplo un personaje que se agacha, salta, se mueve; cada una de esas cosas podría ser un comportamiento en general. 2-Cada clase guarda toda la información, variables y métodos, a un único comportamiento. 3-Los nombres de las clases siempre tienen que ser en CamelCase } void AddTwoNumbers() { Debug.Log(x + y); } } Ahora veremos un ejemplo de la clase que gobernaría a un Cartero using System.Collections; using System.Collections.Generic; using UnityEngine; Cartero{ //Variables Calle =”Calle siempre viva, 876”; //Metodos void EntregarCorreo() void RecogerCorreo() } 15 Comentarios en Programación using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyFirstScript : MonoBehaviour { public int x = 2; public int y = 3; // Start is called before the first frame update void Start() { AddTwoNumbers(); } // Update is called once per frame void Update() { } /* * Esto es un comentario * de múltiples líneas * para explicar cosas */ ///<summary> /// Add Two Numbers. ///</summary> void AddTwoNumbers() COMENTARIOS Notas 1-Los comentarios son útiles para recordar que hace cada código de método o línea. 2-Los comentarios en C# siempre se comienzan con // si es un comentario de una sola línea. 3-Cuando es un comentario de múltiples líneas se usa /* para empezarlo y */ para cerrarlo 4-Con /// antes de un método visual basic lo comenta automáticamente 5-Un buen uso de la variables ,métodos es clave para que los comentarios sean auto explicativos { Debug.Log(x + y); } } 16 17 Acerca de la Optimización y Método Update using System.Collections; using System.Collections.Generic; using UnityEngine; public class { MyFirstScript : MonoBehaviour public int carDoors = 4; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { (El update como dice ene l comentario es llamada una vez por frame) Cualquier cosa que vaya aquí se ejecutara una vez por frame Por tanto aquí no pueden ir códigos muy complicados que tarden mucho en ejecutarse. } } 18 FUNDAMENTOS BASICOS DE C# PARA SCRIPTING Conceptos básicos para escribir en C# using System.Collections; using System.Collections.Generic; using UnityEngine; public class MyFirstScript : MonoBehaviour { public int x = 2; public int y = 3; public string name = "Jon Snow"; // Start is called before the first frame update void Start() { AddTwoNumbers(); } // Update is called once per frame void Update() { } void AddTwoNumbers() { Debug.Log(x + y); } } 19 Acerca del Metodo Debug 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41