1 00:00:07,150 --> 00:00:12,689 Aquí he creado una variable privada, que significa que solo estará disponible en esta clase. 2 00:00:13,150 --> 00:00:21,949 Si yo la declaro pública, significa que estará disponible fuera de la clase y que desde otras clases la podré llamar a esta variable. 3 00:00:22,609 --> 00:00:26,929 Pero no solo eso, si yo la declaro pública ocurre algo en Unity, lo vamos a ver. 4 00:00:26,929 --> 00:00:34,829 Y es que si me voy al objeto que la tiene vinculada, el script, de repente me aparece esto. 5 00:00:34,829 --> 00:00:37,329 justo en el componente del script 6 00:00:37,329 --> 00:00:38,909 me aparece mi variable 7 00:00:38,909 --> 00:00:41,149 con el valor que yo le he dado 8 00:00:41,149 --> 00:00:43,530 de hecho incluso si yo le quito aquí este valor 9 00:00:43,530 --> 00:00:45,509 la declaro nada más 10 00:00:45,509 --> 00:00:48,170 me vuelvo 11 00:00:48,170 --> 00:00:50,130 a Unity 12 00:00:50,130 --> 00:00:53,030 veis se actualiza 13 00:00:53,030 --> 00:00:54,229 y una vez actualizado 14 00:00:54,229 --> 00:00:56,549 esto lo quito porque se ha quedado de antes 15 00:00:56,549 --> 00:00:59,070 veré que yo le puedo dar el valor a esa variable 16 00:00:59,070 --> 00:01:00,890 esto será tremendamente útil 17 00:01:00,890 --> 00:01:03,229 porque nos permitirá ir cambiando los valores de las variables 18 00:01:03,229 --> 00:01:06,829 sin necesidad de entrar en código. Si yo aquí a la variable le digo 19 00:01:06,829 --> 00:01:11,790 que es... ¿qué tal? Pues cuando lance el script 20 00:01:11,790 --> 00:01:15,510 veremos que donde antes me decía hola mundo, pues ahora me dice 21 00:01:15,510 --> 00:01:19,450 ¿qué tal? De hecho existen variables que no son de tipo string 22 00:01:19,450 --> 00:01:23,569 que las veremos más adelante, que son por ejemplo de tipo... voy a hacerle pública 23 00:01:23,569 --> 00:01:26,290 gameObject y le doy nombre. 24 00:01:29,640 --> 00:01:33,799 Veremos que aquí nos aparece también la variable gameObject, pero no aparece 25 00:01:33,799 --> 00:01:39,780 una caja de texto como antes. No, no. Me aparece un selector donde yo le puedo pinchar y seleccionar 26 00:01:39,780 --> 00:01:50,370 los objetos que tengo en la escena. O incluso arrastrarlo. Puedo coger esta esfera y arrastrarla 27 00:01:50,370 --> 00:01:58,409 hasta aquí. Si nosotros queremos tener disponible una variable en nuestro interfaz de Unity 28 00:01:58,409 --> 00:02:03,030 pero no queremos que sea pública, para eso existe otra opción mucho más recomendable 29 00:02:03,030 --> 00:02:11,530 que es esta. SerializeFailed. Y funciona exactamente igual. Y la tenemos disponible 30 00:02:11,530 --> 00:02:22,009 también en Unity. Se actualiza. Ahí está. Vamos a hacer algo con el código similar 31 00:02:22,009 --> 00:02:26,349 a las prácticas que hemos hecho en clase para que veamos que el concepto es más o 32 00:02:26,349 --> 00:02:32,250 menos igual. Voy a crearle un bucle con un for, por ejemplo, como hemos hecho en clase. 33 00:02:32,750 --> 00:02:33,430 ¿Qué es lo que ocurre? 34 00:02:34,490 --> 00:02:40,849 Que le tenemos aquí, normalmente, cuando le decíamos n es igual a 0, 35 00:02:41,710 --> 00:02:43,370 aquí me va a dar error. ¿Por qué? 36 00:02:43,430 --> 00:02:45,569 Porque me está diciendo que la variable no está definida. 37 00:02:45,569 --> 00:02:47,569 Aquí sí que tenemos que definirla. Tenemos dos opciones. 38 00:02:47,789 --> 00:02:50,229 O definirla aquí mismo, ¿de acuerdo? 39 00:02:50,430 --> 00:02:58,289 Y podemos decir, oye, voy a crear una variable de tipo integrer llamada n cuyo valor es 0. 40 00:02:59,310 --> 00:03:01,069 Ahora sí me lo reconoce, ¿de acuerdo? 41 00:03:01,069 --> 00:03:05,490 y donde le decíamos de nuevo a n ya está declarada, no hace falta decirle más, 42 00:03:06,189 --> 00:03:08,789 n sea menor que 10, pues n más más. 43 00:03:10,229 --> 00:03:12,629 La verdad es que esta variable la podríamos haber declarada antes, 44 00:03:12,629 --> 00:03:18,050 es decir, le podríamos haber dicho que voy a crear una nueva variable de tipo integer llamado a n 45 00:03:18,050 --> 00:03:21,770 y ya está. Entonces esto ya no era necesario. 46 00:03:24,719 --> 00:03:26,620 Ya tengo un bucle, voy a ver. 47 00:03:28,080 --> 00:03:33,099 Le voy a decir que mande a consola la letra n, o sea, la variable n. 48 00:03:33,219 --> 00:03:39,620 eso significa que me mandará de 0 a 9 acabo de crear un bucle de 10 le doy a 49 00:03:39,620 --> 00:03:49,870 play y efectivamente veo aquí un bucle me dice dónde lo está mandando en cada 50 00:03:49,870 --> 00:03:53,229 momento voy a crear un método lo que antes que llamamos funciones voy a 51 00:03:53,229 --> 00:03:56,969 crear un método y aquí cuidado porque entramos en terreno delicado para 52 00:03:56,969 --> 00:04:00,150 empezar os recuerdo que ahora mismo estamos 53 00:04:00,150 --> 00:04:03,810 dentro de un método de estar que se lanza cuando carga el juego si yo quiero 54 00:04:03,810 --> 00:04:13,889 crear otro método, lo suyo sería fuera. Mi propio método. ¿Cómo funciona la sintaxis 55 00:04:13,889 --> 00:04:18,470 para crear un método? En Csharp, primero, le tenemos que decir qué va a devolver ese 56 00:04:18,470 --> 00:04:24,730 método. Es decir, si va a devolver un número entero, si va a devolver una cadena de texto 57 00:04:24,730 --> 00:04:29,110 o si no va a devolver nada. Por ejemplo, voy a hacer un método que no devuelva nada, que 58 00:04:29,110 --> 00:04:33,370 sencillamente salude y como le decimos a un método que no va a devolver nada voy 59 00:04:33,370 --> 00:04:38,290 esto es importante es decir aunque vaya a ser un método que no va a devolver 60 00:04:38,290 --> 00:04:42,310 nada si lo tenemos que indicar si nos fijamos de hecho el método estar es un 61 00:04:42,310 --> 00:04:45,370 método que está pensado para no devolver nada sencillamente para ejecutar esas 62 00:04:45,370 --> 00:04:48,550 líneas de código así que lo mismo aquí le voy a crear un método que se llame 63 00:04:48,550 --> 00:05:03,990 saludar saludar y no hace falta diferencia de javascript o de php no 64 00:05:03,990 --> 00:05:07,990 hace falta decirle function, no hay que especificarle que es una función, porque en el momento 65 00:05:07,990 --> 00:05:11,889 en el que nosotros le ponemos los paréntesis, él ya entiende que es una función. No hace 66 00:05:11,889 --> 00:05:17,750 falta indicar nada más. Ya he creado mi propio método. ¿Y qué va a hacer mi método? Pues 67 00:05:17,750 --> 00:05:25,790 saludar, pues efectivamente mandar a consola hola. Ahora hay que llamar al método. Así 68 00:05:25,790 --> 00:05:31,149 que, por ejemplo, igual que hemos hecho en clase, en este bucle que se ejecuta 10 veces, 69 00:05:31,149 --> 00:05:58,490 en vez de mostrarme en la consola le voy a decir que llame al método, saludar, así que si todo va bien me mandará 10 veces hola a la consola, vamos a comprobarlo, ahí están, hola, hola, hola, hola, hola, 10 veces. 70 00:05:58,490 --> 00:06:00,470 subamos un poquito de nivel 71 00:06:00,470 --> 00:06:05,689 igual que hemos visto que las funciones pueden recibir variables y retornar valores 72 00:06:05,689 --> 00:06:10,589 también en C Sharp y también con los métodos de programación orientado a objetos 73 00:06:10,589 --> 00:06:12,410 voy a hacer un ejemplo que hemos hecho en clase 74 00:06:12,410 --> 00:06:14,829 para ver que funciona más o menos igual 75 00:06:14,829 --> 00:06:17,769 y para que nosotros también podamos ponerlo ya en práctica 76 00:06:17,769 --> 00:06:20,629 voy a crear una función que sea multiplicar 77 00:06:20,629 --> 00:06:22,649 a la cual requiera dos números 78 00:06:22,649 --> 00:06:25,250 y que devuelva el resultado 79 00:06:25,250 --> 00:06:26,350 ¿de acuerdo? 80 00:06:27,430 --> 00:06:28,230 vamos a ello 81 00:06:28,230 --> 00:06:32,829 me voy a mi código, voy a borrar esta función 82 00:06:32,829 --> 00:06:38,610 veis que automáticamente en cuanto la he borrado aquí me da error 83 00:06:38,610 --> 00:06:41,889 indicando que efectivamente esta función no existe 84 00:06:41,889 --> 00:06:46,829 de hecho voy a borrar 85 00:06:46,829 --> 00:06:50,949 todo esto porque voy a empezar a decir, entonces voy a crear una función y lo primero que le tengo que decir 86 00:06:50,949 --> 00:06:53,370 es que me va a devolver un resultado, ¿de qué tipo? 87 00:06:53,370 --> 00:06:56,629 pues por ejemplo que sea de tipo 88 00:06:56,629 --> 00:07:02,589 float. Es decir, me va a devolver 89 00:07:02,589 --> 00:07:06,670 un número con decimales. Y a diferencia del anterior método 90 00:07:06,670 --> 00:07:09,610 que hemos creado, este sí que requiere variables. Y 91 00:07:09,610 --> 00:07:14,589 como estamos en C Sharp, ya no se nos puede olvidar que cada vez que declaramos una variable le tenemos que 92 00:07:14,589 --> 00:07:18,490 decir qué tipo de variable es. Por ejemplo, si va a ser un número decimal 93 00:07:18,490 --> 00:07:22,089 decimos que la primera variable 94 00:07:22,089 --> 00:07:26,550 es de tipo float y se llama num1. Y la segunda variable también es 95 00:07:26,550 --> 00:07:38,259 de tipo float y se va a llamar num2. ¿Y qué va a hacer este método? Pues declarar una 96 00:07:38,259 --> 00:07:49,449 variable de tipo float que se va a llamar resultado. Aquí me está dando un error indicándome 97 00:07:49,449 --> 00:07:54,250 que este se ha declarado pero nunca se ha usado, por eso está en verde. Y aquí me 98 00:07:54,250 --> 00:08:00,829 está dando un error, fijaros hasta qué punto es preciso el entorno de desarrollo, porque 99 00:08:00,829 --> 00:08:05,529 sabe que estaba este método tiene que devolver algo y ahora mismo no lo 100 00:08:05,529 --> 00:08:09,269 devuelve si nos ponemos encima me lo dice 101 00:08:09,269 --> 00:08:14,009 que no está devolviendo nada voy a hacer que lo devuelva return 102 00:08:14,009 --> 00:08:23,300 resultado de acuerdo y ya si desaparece ese error ahora me da 103 00:08:23,300 --> 00:08:25,779 otro me dice que vale que estás devolviendo el resultado pero que no 104 00:08:25,779 --> 00:08:32,019 tiene ningún valor pues vamos a dárselo resultado es igual al número que me han 105 00:08:32,019 --> 00:08:35,799 pasado por la función multiplicado por un 2 es decir exactamente igual que lo 106 00:08:35,799 --> 00:08:40,019 que hacemos en clase vemos que ya no hay ningún error ahora 107 00:08:40,019 --> 00:08:44,639 esta función este método existe pero no se ha llamado en ningún momento vamos a 108 00:08:44,639 --> 00:08:51,850 llamarlo de hecho voy a crearle la variable de tipo privada que sea el tipo 109 00:08:51,850 --> 00:08:57,610 float y llamado may bar por ejemplo ya está 110 00:08:57,610 --> 00:09:06,190 ¿Por qué? Porque esa variable que acabo de crear va a ser lo que me devuelva a la función multiplicar. 111 00:09:07,909 --> 00:09:12,750 Multiplicando, por ejemplo, 5,4. 112 00:09:13,269 --> 00:09:23,409 Muy importante, siempre que pongamos un número y ese número sea decimal, es decir, que sea un número de tipo decimal, 113 00:09:23,409 --> 00:09:30,330 Aunque no tenga decimales, aunque sea 5, pero yo quiero que el programa entienda que es un número decimal, le tenemos que poner una f. 114 00:09:31,049 --> 00:09:38,190 Es decir, ese 5 con 4, para que el programa entienda que es un decimal, le tengo que poner f. 115 00:09:38,450 --> 00:09:41,190 Si no, él entendería que es un número entero y entonces daría error. 116 00:09:42,970 --> 00:09:49,169 Así que me va a multiplicar 5 con 4 por, qué sé yo, 6 con 3. 117 00:09:49,169 --> 00:09:53,409 aunque sea 6, yo le puedo decir que me lo multiplique por 6 118 00:09:53,409 --> 00:09:57,549 pero si para mí ese 6 es un número decimal, no un número entero 119 00:09:57,549 --> 00:09:59,110 se lo tenemos que indicar con una F al final 120 00:09:59,110 --> 00:10:05,210 así que va a multiplicar 5,4 por 6 y me va a devolver un número decimal 121 00:10:05,210 --> 00:10:07,429 le voy a decir que me lo mande a consola 122 00:10:07,429 --> 00:10:22,080 pues igual que vimos en clase, al comienzo creo mis variables 123 00:10:22,080 --> 00:10:24,399 de acuerdo, luego 124 00:10:24,399 --> 00:10:29,259 en este método que se va a ejecutar cuando lance yo el juego 125 00:10:29,259 --> 00:10:32,360 le he dicho que esa variable que he creado antes 126 00:10:32,360 --> 00:10:38,000 tome el valor que le devuelve el método multiplicar 127 00:10:38,000 --> 00:10:41,919 y este método requiere dos variables num1 y num2 128 00:10:41,919 --> 00:10:46,679 y creo una variable que contendrá ese resultado 129 00:10:46,679 --> 00:10:50,200 cuyo valor será la multiplicación de num1 y num2 130 00:10:50,200 --> 00:10:57,559 Si quiero ser incluso más eficiente hasta puedo cortar esto y pegarlo aquí y me ahorro una línea de código. 131 00:10:57,860 --> 00:11:06,159 Al mismo tiempo que declaro la variable le asigno el valor y lo devuelvo, muy importante, y al devolverlo se lo estoy asignando a esta variable. 132 00:11:07,740 --> 00:11:13,059 Así que si ahora mismo lanzo el juego, si todo va bien, debería mandarme a consola el resultado de la multiplicación. 133 00:11:13,240 --> 00:11:20,320 Vamos a ver. Le doy al play y si todo va bien, ahí está el resultado de la multiplicación. 134 00:11:21,580 --> 00:11:38,379 Bueno, como hemos visto, más o menos los conceptos son los mismos, puede cambiar sutilmente la sintaxis, que aquí tenemos que añadir una f, que aquí le tenemos que decir qué tipo de variable es, que no tenemos que escribir function, es decir que nos iremos acostumbrando ya a la sintaxis del lenguaje que estemos usando, pero los conceptos son los mismos. 135 00:11:38,899 --> 00:11:49,779 Declarar variables, decir qué tipo de variables, darle valor a las variables, crear funciones o lo que aquí llama métodos, llamar a esos métodos, crear bucles, pues eso, para crear ciclos y en cada ciclo hacer algo. 136 00:11:50,639 --> 00:11:52,460 El funcionamiento es prácticamente el mismo.