1 00:00:02,220 --> 00:00:16,859 Al final de la tarea, una vez teníamos el script realizado, hay que conseguir que al lanzar el juego, dado que se ubica en el start, si no me equivoco, aquí está descrito, solo se hará una vez y se instanciará ese prefab, que es la nave, una sola vez. 2 00:00:16,859 --> 00:00:29,140 Es cierto que, y abro aquí un código, lo pongo por aquí, que dependiendo de qué sobrecarga hayas usado del método Instantiate, hará una opción u otra. 3 00:00:29,760 --> 00:00:40,880 El otro día dijimos, veis que aquí hay tres formas, pasarán tres cosas y se instanciarán tres naves y cada una tiene unas diferentes consecuencias. 4 00:00:40,880 --> 00:01:00,280 Cuando empezamos a escribir el método instantiate, a ver si quiere, empieza a escribir ya incorrectamente, cuando abrimos estos paréntesis que definen a las funciones o métodos, teníamos estas sobrecargas que nos iban indicando qué propiedades está esperando. 5 00:01:00,280 --> 00:01:26,140 En principio las tres primeras, digamos las cuatro primeras casi, son las que más se utilizan. Bueno, cada una tiene sus propias consecuencias, pero no es lo mismo, no es exactamente lo mismo, suele estar todo relacionado y instantiate sirve para generar un clon de lo que se haya referenciado, pero no es lo mismo realizar, y ahora aquí paso a ejecutar tres si queréis, 6 00:01:26,140 --> 00:01:29,120 una instancia en la que solo se le pasa un parámetro 7 00:01:29,120 --> 00:01:30,040 que es el objeto 8 00:01:30,040 --> 00:01:32,280 que hemos 9 00:01:32,280 --> 00:01:34,840 introducido, digamos 10 00:01:34,840 --> 00:01:36,739 capturado a través del 11 00:01:36,739 --> 00:01:38,640 serialized field, que recordemos que es 12 00:01:38,640 --> 00:01:41,040 que luego, una vez tenemos 13 00:01:41,040 --> 00:01:43,159 este script, a ver, perdonad 14 00:01:43,159 --> 00:01:44,560 que es 15 00:01:44,560 --> 00:01:46,799 importante cuando queramos ver 16 00:01:46,799 --> 00:01:49,159 lo relativo a un 17 00:01:49,159 --> 00:01:51,239 a un script, no olvidar 18 00:01:51,239 --> 00:01:52,480 que ese script tiene que ser 19 00:01:52,480 --> 00:01:54,859 componente de alguno de los elementos que están 20 00:01:54,859 --> 00:02:02,420 en la escena ejecutándose vale por tanto voy a poner este instante prefab vale que es el script 21 00:02:02,420 --> 00:02:08,719 que estaba revisando hace un segundito está aquí está siempre fab y perdón en inglés instancia 22 00:02:08,719 --> 00:02:17,500 prefab si yo guardo vale tengo aquí 3 instancia y diferentes cada uno tiene sus particularidades 23 00:02:17,500 --> 00:02:24,460 como acabo de decir y cuando yo ejecuto no en el estar se van a generar los tres o eso debería 24 00:02:24,460 --> 00:02:26,280 hacer, vamos a darle a play y 25 00:02:26,280 --> 00:02:27,500 a ver si lo hace 26 00:02:27,500 --> 00:02:32,139 no hace nada y de hecho da fallo, ¿por qué? 27 00:02:32,240 --> 00:02:34,219 porque ya que os tengo aquí 28 00:02:34,219 --> 00:02:36,240 y entiendo que habéis estado con la tarea, ¿por qué no 29 00:02:36,240 --> 00:02:38,159 ¿por qué no se ha instanciado nada? 30 00:02:38,259 --> 00:02:42,939 ¿por qué da error? que esto ya lo vimos 31 00:02:42,939 --> 00:02:44,979 el otro día y bueno, si habéis hecho la tarea pues 32 00:02:44,979 --> 00:02:47,520 lo tendréis 33 00:02:47,520 --> 00:02:48,139 claro 34 00:02:48,139 --> 00:02:50,139 ¿por qué no lo tienes instanciado, no? 35 00:02:51,319 --> 00:02:53,020 ¿a qué te refieres? porque yo aquí 36 00:02:53,020 --> 00:02:54,180 básicamente 37 00:02:54,180 --> 00:02:56,259 ya tengo 38 00:02:56,259 --> 00:02:58,419 un instancia de myPrefab 39 00:02:58,419 --> 00:03:00,280 que está aquí preparado y debería 40 00:03:00,280 --> 00:03:02,639 instanciar ese prefab. Pero no tienes vinculado 41 00:03:02,639 --> 00:03:04,860 Unity en la columna de la derecha. 42 00:03:05,000 --> 00:03:05,840 Efectivamente. Es genial. 43 00:03:06,580 --> 00:03:08,319 Aquí, si nos damos cuenta, se han 44 00:03:08,319 --> 00:03:10,500 generado los campos para introducir 45 00:03:10,500 --> 00:03:12,259 pues, ojo, qué es 46 00:03:12,259 --> 00:03:14,280 mi prefab y qué GameObject 47 00:03:14,280 --> 00:03:16,180 es el que quiero instanciar. Aquí es donde 48 00:03:16,180 --> 00:03:18,139 podemos arrastrar este prefab 49 00:03:18,139 --> 00:03:20,400 y pues está 50 00:03:20,400 --> 00:03:22,240 aquí preparado y ahora todo lo que en el código 51 00:03:22,240 --> 00:03:24,599 tenga una variable referenciada 52 00:03:24,599 --> 00:03:26,139 con mi prefab, con myPrefab, 53 00:03:26,259 --> 00:03:27,400 pues se refiere a ese objeto. 54 00:03:27,860 --> 00:03:29,159 Por tanto, esta línea, por ejemplo, 55 00:03:29,280 --> 00:03:30,259 este primer instant shade, 56 00:03:30,680 --> 00:03:34,139 ya tiene lo que necesita para hacer la instancia. 57 00:03:34,659 --> 00:03:36,240 Cuando solo se usa uno de los parámetros, 58 00:03:36,479 --> 00:03:41,379 que además es la primera sobrecarga, 59 00:03:41,800 --> 00:03:45,979 hacemos el instant shade solo dando un objeto 60 00:03:45,979 --> 00:03:47,460 que es el original que se va a clonar, 61 00:03:47,580 --> 00:03:48,740 que es lo que acabamos de hacer aquí. 62 00:03:49,599 --> 00:03:52,080 Cuando yo ahora, no olvidéis de guardar, 63 00:03:52,139 --> 00:03:53,860 siempre que hagáis algún cambio en el código 64 00:03:53,860 --> 00:03:54,819 para que se ejecute, 65 00:03:54,819 --> 00:04:15,479 Vale, yo ahora cuando lance el juego, al menos una nave tiene que aparecer, ¿vale? Y de hecho se han generado alguna más. Y ve, de hecho, que si nos fijamos, a ver, tenemos una aquí, tenemos otra aquí, las estoy moviendo, bueno, perdonad que estoy cogiendo partes de la nave, de este prefab si la arrastro para acá y de este prefab para acá, ¿vale? 66 00:04:15,479 --> 00:04:40,060 Se han generado dos naves y las dos, si nos damos cuenta, están, deshago y marco una en el 0, 0, 0. Por tanto, una de estas naves, básicamente esta primera, es la primera que ha aparecido, porque recordad que el código, como os dije el otro día, a medida que lo vayamos complicando, esto no es así, pero en este momento sí que lo es, el código se va ejecutando de arriba a abajo. 67 00:04:40,060 --> 00:04:52,540 Entonces la primera nave que se genera en la jerarquía de objetos, que si os dais cuenta a medida que voy incorporando se van añadiendo de arriba a abajo, la primera nave se hacía referencia a esa. 68 00:04:53,199 --> 00:05:00,819 Es verdad que aquí tenemos otros dos Instantiates que no se están produciendo. 69 00:05:00,819 --> 00:05:02,899 como ya os comenté 70 00:05:02,899 --> 00:05:05,060 para hacer pruebas de que funciona y que no 71 00:05:05,060 --> 00:05:06,939 y esto me sirve un poco para explicar 72 00:05:06,939 --> 00:05:09,040 que un mismo método como este InstanceAid 73 00:05:09,040 --> 00:05:10,519 tiene varias sobrecargas y cada una 74 00:05:10,519 --> 00:05:12,779 tiene unas consecuencias 75 00:05:12,779 --> 00:05:14,259 que es lo que iba diciendo del principio 76 00:05:14,259 --> 00:05:16,639 ahora si guardo y lanzo el juego 77 00:05:16,639 --> 00:05:18,540 pues nuevamente 78 00:05:18,540 --> 00:05:22,959 como el prefab está ahí 79 00:05:22,959 --> 00:05:24,079 instanciado pues 80 00:05:24,079 --> 00:05:26,920 placa y aquí tenemos la nave 81 00:05:26,920 --> 00:05:29,100 por tanto este InstanceAid 82 00:05:29,100 --> 00:05:30,220 primero está funcionando 83 00:05:30,220 --> 00:05:32,839 bueno, pues ya si quisiéramos usar 84 00:05:32,839 --> 00:05:34,680 ese instant sheet, está ahí preparado 85 00:05:34,680 --> 00:05:36,920 vamos a ver qué pasa con el resto 86 00:05:36,920 --> 00:05:39,079 es decir, voy a comentar 87 00:05:39,079 --> 00:05:40,240 el resto y voy a ver 88 00:05:40,240 --> 00:05:43,120 esta línea, según empieza 89 00:05:43,120 --> 00:05:44,620 es verdad que aquí está 90 00:05:44,620 --> 00:05:46,759 generando como una variable, si os fijáis 91 00:05:46,759 --> 00:05:48,680 que le está poniendo un nombre que se llama instancia 92 00:05:48,680 --> 00:05:50,399 que si no 93 00:05:50,399 --> 00:05:52,839 vemos mal, aquí pone 94 00:05:52,839 --> 00:05:54,959 gameObjectMyPrefab, está generando 95 00:05:54,959 --> 00:05:57,160 una variable de un tipo de variable 96 00:05:57,160 --> 00:05:58,759 que es gameObject, es decir 97 00:05:58,759 --> 00:06:06,160 una clase, un conjunto de código que se refiere a todo lo relativo a los GameObjects. 98 00:06:06,279 --> 00:06:09,920 Si ya habéis estado estudiando, un GameObject en Unity se refiere a cada uno, 99 00:06:10,240 --> 00:06:14,279 da igual que sea la cámara, la luz, un cubo, cualquier geometría, 100 00:06:14,540 --> 00:06:18,379 todo lo que vamos teniendo aquí introducido genéricamente se llama como un GameObject. 101 00:06:18,899 --> 00:06:26,040 Esta cajita, digamos, hecha de alambre, que no está rellena, es un GameObject aquí representado, 102 00:06:26,040 --> 00:06:28,519 que no es lo mismo que meter un prefab que veis que sí que está lleno. 103 00:06:28,759 --> 00:06:32,279 Pero en genérico, todo lo que se va introduciendo aquí son GameObjects. 104 00:06:32,600 --> 00:06:40,899 Por eso, cuando queremos referenciar a un objeto, usamos esta clase GameObject que usamos como tipo de la variable. 105 00:06:41,199 --> 00:06:46,639 Y por eso, todo lo que metamos en esta caja, si recordáis la analogía que hacía el otro día con cajas, 106 00:06:47,139 --> 00:06:52,579 si lo que queremos es que recoja ese GameObject, pues habrá que usar la clase GameObject. 107 00:06:54,300 --> 00:06:58,079 Voy a seguir y ahora vamos al transform y vemos un par de cosas. 108 00:06:58,759 --> 00:07:22,800 Si yo ahora guardo y digo, a ver qué ocurre cuando yo ahora lanzo el juego, ¿no? Que solo se va a ejecutar esta línea en el start. Vamos a ver. Me voy a poner aquí a mi lado el for. Vale. Vale. Acabo de lanzar el juego y hay una nave en el 15, bueno, perdón, en el 000. Igual. Vale. 109 00:07:22,800 --> 00:07:29,040 pues eso significa que crea una instancia en la posición, aquí os lo he comentado y está ya indicado, 110 00:07:29,100 --> 00:07:32,959 crea una instancia en la posición del objeto de referencia y como hijo suyo. 111 00:07:33,480 --> 00:07:39,720 Pero es verdad que está ocurriendo algo, si os dais cuenta, que es que aunque aquí he puesto dos parámetros, 112 00:07:40,339 --> 00:07:47,879 my prefab y referencia, referencia si lo pensamos bien, me podéis contestar, ¿a qué se está refiriendo en este momento? 113 00:07:54,329 --> 00:07:57,029 A el inobjet que has ubicado ahí vacío, ¿no? 114 00:07:57,029 --> 00:08:09,889 No, tened en cuenta que yo he generado aquí una variable de tipo transform, y transform, si recordáis, es el primer componente que tiene las coordenadas de posición, rotación y escala de cualquier objeto, de casi cualquiera. 115 00:08:10,170 --> 00:08:15,689 Todos suelen empezar teniendo ese componente, y luego muchos otros dependiendo de cuál sea la función. 116 00:08:16,829 --> 00:08:26,250 Fijaos que yo en referencia, que es otra variable que he generado por medio de un campo serializado, no le he dado ninguna referencia. 117 00:08:26,250 --> 00:08:46,769 Ahora mismo está vacía, es nula, no existe. Por eso la ha generado en el 000 y no es hija de nada, como pongo ahí que es. Si os fijáis, es exactamente el prefab, el 00, porque no tiene esa referencia. Es decir, ahora mismo esta línea está funcionando como esta primera, porque aquí lo que tiene es nada, no existe. 118 00:08:46,769 --> 00:09:05,789 Para aprovechar esta sobrecarga y que tenga sentido meter dos variables aquí dentro, habría que decir cuál es esa referencia. Y ahora mismo pone ninguna y está esperando un objeto, un vínculo en este campo del tipo transform. 119 00:09:05,789 --> 00:09:27,169 ¿Eso qué significa lo de transform? Que si yo en este campo, igual que he hecho en este de aquí arriba, arrastro aquí la nave, vais a ver que pone esa nave prefab, es el mismo objeto, pero fijaos en dos cosas, primero cambia el icono y cambia, también da como una indicación de qué es lo que está cogiendo de esta referencia que hemos metido ahí. 120 00:09:27,169 --> 00:09:38,610 Si os fijáis además, esto no sé si lo dije el otro día, este iconito es el mismo que el del componente transform, porque de esta variable solo está recogiendo lo relativo al transform del objeto. 121 00:09:39,289 --> 00:09:46,809 De este, por ejemplo, no se va a poder decir, si este GameObject tiene un componente de otro tipo, haz tal. 122 00:09:46,970 --> 00:09:53,070 No podremos hacer ningún tipo de operación en algo que no sea el componente transform de ese objeto. 123 00:09:53,070 --> 00:10:02,730 Igual que aquí accedemos al objeto completo, que aquí lo hemos hecho para que se instancie completamente, aquí solo estamos cogiendo una parte de ese objeto, ese componente transform. 124 00:10:03,090 --> 00:10:13,250 Esto me sirve, nuevamente el otro día, para introducir que las variables pueden ser de tipos casi ilimitados en relación con la cantidad de componentes que hay. 125 00:10:13,250 --> 00:10:26,450 Es decir, aquí si yo busco, no hay un transform porque como ya viene aplicado no está preparado, pero también os dije el otro día que, por ejemplo, lo vais a ver en la lección 3, existe este RigidBody. 126 00:10:26,450 --> 00:10:28,610 pues yo si por ejemplo 127 00:10:28,610 --> 00:10:31,029 en este objeto que le he añadido un RigidBody 128 00:10:31,029 --> 00:10:32,889 quisiera en algún momento 129 00:10:32,889 --> 00:10:34,789 cambiar las propiedades del componente 130 00:10:34,789 --> 00:10:36,649 RigidBody, esto ya lo iremos viendo 131 00:10:36,649 --> 00:10:38,750 que es básicamente 132 00:10:38,750 --> 00:10:40,909 lo que activa el motor de físicas de 133 00:10:40,909 --> 00:10:42,929 Unity, siempre va a haber 134 00:10:42,929 --> 00:10:44,509 la posibilidad de 135 00:10:44,509 --> 00:10:46,809 imaginaos que yo también puedo hacer 136 00:10:46,809 --> 00:10:48,629 una variable, fijaos que está aquí preparada 137 00:10:48,629 --> 00:10:50,570 y RigidBody2D es otro tipo de variable 138 00:10:50,570 --> 00:10:52,649 pues haremos una 139 00:10:52,649 --> 00:10:54,250 variable de tipo 140 00:10:54,250 --> 00:10:56,629 físicas, yo que sé, recordad que 141 00:10:56,629 --> 00:10:58,690 esto es el tipo de variable y esto 142 00:10:58,690 --> 00:11:00,909 es el nombre, que podemos poner el que queramos 143 00:11:00,909 --> 00:11:02,750 que asignamos a esta 144 00:11:02,750 --> 00:11:04,309 caja que recoge lo de variable 145 00:11:04,309 --> 00:11:06,289 y ahora fijaos que si 146 00:11:06,289 --> 00:11:08,250 bueno, si yo guardo lo primero 147 00:11:08,250 --> 00:11:10,629 recordad la estrellita de aquí 148 00:11:10,629 --> 00:11:12,730 si yo guardo y vuelvo 149 00:11:12,730 --> 00:11:14,590 a ir al objeto en el que he puesto 150 00:11:14,590 --> 00:11:16,190 el script, ahora hay otra 151 00:11:16,190 --> 00:11:17,929 bueno, tiene que estar este rigidbody 152 00:11:17,929 --> 00:11:20,509 para poder referenciarlo ahora, pero ahora está 153 00:11:20,509 --> 00:11:21,610 esperando otro 154 00:11:21,610 --> 00:11:24,710 o que introduzcamos algo en este campo 155 00:11:24,710 --> 00:11:26,029 de tipo RigidBody 156 00:11:26,029 --> 00:11:28,269 un poco del tipo de la caja que hemos creado 157 00:11:28,269 --> 00:11:29,990 si yo aquí arrastro ahora la nave 158 00:11:29,990 --> 00:11:32,149 veréis que 159 00:11:32,149 --> 00:11:34,169 la nave prefab como no tiene 160 00:11:34,169 --> 00:11:34,850 RigidBody 161 00:11:34,850 --> 00:11:38,029 no lo va a coger porque si que tiene transform 162 00:11:38,029 --> 00:11:40,250 si que se puede arrastrar como todos los 163 00:11:40,250 --> 00:11:42,250 GameObjects un GameObject pero no 164 00:11:42,250 --> 00:11:43,850 tiene un RigidBody por tanto 165 00:11:43,850 --> 00:11:45,970 aunque yo intente, podéis hacer la prueba 166 00:11:45,970 --> 00:11:47,789 arrastrar igual que si me deja 167 00:11:47,789 --> 00:11:50,269 introducirlo en los otros dos campos 168 00:11:50,269 --> 00:11:51,110 aquí no me deja 169 00:11:51,110 --> 00:11:55,750 sí que podré, por ejemplo, meter el propio GameObject del script 170 00:11:55,750 --> 00:11:58,450 fijaos que si yo lo arrastro, sí me deja, ¿por qué? 171 00:11:58,970 --> 00:12:03,029 porque tiene un RigidBody al cual yo podré acceder luego para cambiar variables 172 00:12:03,029 --> 00:12:08,529 y veis que además el iconito, en estos componentes que ya vienen generados directamente por Unity 173 00:12:08,529 --> 00:12:11,070 pues les ponen estos iconitos para facilitar 174 00:12:11,070 --> 00:12:14,730 veis que aunque la caja parece que es un poco lo mismo 175 00:12:14,730 --> 00:12:19,049 esto ya profundizaremos más 176 00:12:19,049 --> 00:12:21,470 luego al final cada variable tiene su tipo 177 00:12:21,470 --> 00:12:23,850 aquí lo que estamos haciendo en esta línea 178 00:12:23,850 --> 00:12:27,850 es crear sin pasar por el comienzo 179 00:12:27,850 --> 00:12:31,149 de la clase, que es donde vamos generando 180 00:12:31,149 --> 00:12:33,350 lo que se llama las variables miembro 181 00:12:33,350 --> 00:12:36,149 que son variables que podréis usar en todo el código 182 00:12:36,149 --> 00:12:38,629 porque su ámbito, esto si ya habéis visto 183 00:12:38,629 --> 00:12:41,409 ahora vamos un poco a esto, pero si ya habéis leído el tema 0 184 00:12:41,409 --> 00:12:44,590 cosa que deberíais haber hecho, al menos una pasada 185 00:12:44,590 --> 00:12:49,309 hay un tipo de variables que si se ubican al comienzo 186 00:12:49,309 --> 00:12:52,409 de la clase podrán ser luego empleadas 187 00:12:52,409 --> 00:12:54,610 por cualquier método, en este caso start 188 00:12:54,610 --> 00:12:58,250 lo que también se puede hacer es declarar 189 00:12:58,250 --> 00:13:01,049 es decir, construir esta caja dentro ya de un método 190 00:13:01,049 --> 00:13:04,409 no dentro de la clase en general, sino dentro de un método 191 00:13:04,409 --> 00:13:06,730 de su propio bloque, entonces estamos generando 192 00:13:06,730 --> 00:13:09,649 una caja de tipo GameObject 193 00:13:09,649 --> 00:13:13,370 que estamos llamando instancia y a diferencia 194 00:13:13,370 --> 00:13:15,490 de aquí, lo que estamos 195 00:13:15,490 --> 00:13:17,429 haciendo es que en ningún momento hemos 196 00:13:17,429 --> 00:13:19,370 creado un serialize que te 197 00:13:19,370 --> 00:13:21,389 permita arrastrar y saber 198 00:13:21,389 --> 00:13:23,549 que esta caja se llena con un objeto 199 00:13:23,549 --> 00:13:25,350 que metes por el inspector, no 200 00:13:25,350 --> 00:13:27,110 aquí lo que estamos haciendo es 201 00:13:27,110 --> 00:13:28,769 rellenar la caja instancia 202 00:13:28,769 --> 00:13:31,090 de tipo GameObject con la instancia 203 00:13:31,090 --> 00:13:33,149 que generamos, es decir 204 00:13:33,149 --> 00:13:34,830 que si yo en esta instancia 205 00:13:34,830 --> 00:13:37,429 luego cambio alguno de sus 206 00:13:37,429 --> 00:13:38,629 parámetros, ahora lo vemos 207 00:13:38,629 --> 00:13:41,590 no está refiriéndose a 208 00:13:41,590 --> 00:13:42,909 nada que hemos capturado por 209 00:13:42,909 --> 00:13:47,929 el inspector, sino que hemos llenado la caja directamente con una instrucción 210 00:13:47,929 --> 00:13:50,769 que hemos dado aquí. ¿Esto qué significa? 211 00:13:52,070 --> 00:13:56,190 Un ejemplo rápido. Veremos que hay un montón de instrucciones y recordad 212 00:13:56,190 --> 00:13:59,529 esto lo vimos el otro día, que había un operador al escribir 213 00:13:59,529 --> 00:14:02,009 sentencias, que es el punto. 214 00:14:02,629 --> 00:14:07,929 Esto lo indiqué, por ejemplo, cuando ponemos transform, podemos acceder a la 215 00:14:07,929 --> 00:14:11,950 posición de un objeto si escribimos position, porque estamos 216 00:14:11,950 --> 00:14:14,230 accediendo a las 217 00:14:14,230 --> 00:14:16,070 propiedades del transform 218 00:14:16,070 --> 00:14:18,210 lo único es que, como ya os dije 219 00:14:18,210 --> 00:14:19,929 que como el transform es tan utilizado 220 00:14:19,929 --> 00:14:21,929 porque es todo lo que se refiere a las coordenadas 221 00:14:21,929 --> 00:14:23,929 de los GameObjects, pues han 222 00:14:23,929 --> 00:14:25,830 generado, aparte de la clase transform 223 00:14:25,830 --> 00:14:28,190 que siempre se describe en las clases con mayúscula 224 00:14:28,190 --> 00:14:29,409 empezando por mayúscula 225 00:14:29,409 --> 00:14:31,970 importante, esto también lo pone las buenas prácticas 226 00:14:31,970 --> 00:14:33,889 en el tema cero, han generado 227 00:14:33,889 --> 00:14:35,929 una propiedad 228 00:14:35,929 --> 00:14:38,090 que se llama transform con minúscula 229 00:14:38,090 --> 00:14:39,929 que es el nombre en el que se da 230 00:14:39,929 --> 00:14:41,669 a las propiedades como por ejemplo 231 00:14:41,669 --> 00:14:44,029 positian. No estamos aquí refiriéndonos 232 00:14:44,029 --> 00:14:45,330 a la clase directamente, 233 00:14:45,929 --> 00:14:47,809 sino que es una especie de... 234 00:14:47,809 --> 00:14:49,710 Es un poco ambiguo porque al final es la misma 235 00:14:49,710 --> 00:14:51,990 palabra, pero las mayúsculas 236 00:14:51,990 --> 00:14:53,789 y las minúsculas tienen influencia al escribir 237 00:14:53,789 --> 00:14:56,029 código. Entonces, una manera de simplificar 238 00:14:56,029 --> 00:14:57,990 y, digamos, no tener que acceder 239 00:14:57,990 --> 00:14:59,649 a una clase que es como una entidad superior, 240 00:15:00,409 --> 00:15:01,789 sino de meter una operación 241 00:15:01,789 --> 00:15:03,389 que se puede hacer de manera más simple, 242 00:15:03,809 --> 00:15:05,769 podemos acceder a las propiedades 243 00:15:05,769 --> 00:15:07,789 del transform con este transform en minúscula 244 00:15:07,789 --> 00:15:09,809 y luego al ir poniendo el positian, pues podemos decir 245 00:15:09,809 --> 00:15:23,909 Igual a 10, que va a dar fallo por más cuestiones. Pero veis que lo importante de esto ahora mismo es que cuando ponemos un punto, vamos abriendo opciones hijas de ese primer elemento que hemos puesto. 246 00:15:23,909 --> 00:15:44,470 Como lo que el otro día os dije de país, comunidad autónoma o estado, si fuera Estados Unidos, ciudad, punto calle, punto número, ¿vale? Si estas propiedades existieran configuradas, pues sería esta la forma, la sintaxis para ir accediendo, digamos, de un elemento a otro. 247 00:15:44,470 --> 00:16:00,590 Pero para poder acceder, por ejemplo, al elemento ciudad, si no lo hemos configurado de otra forma, siempre hay que ir accediendo de un padre, digamos que reconozca o que hemos guardado como variable, como punto de partida y luego podemos ir llegando a los hijos. 248 00:16:00,590 --> 00:16:20,710 ¿Esto qué quiere decir? Que si hemos generado, y les comento esto que tengo aquí, si hemos generado un GameObject que llamamos instancia, que será esa instancia que hemos generado, luego podremos acceder, esto también es ir sabiendo poco a poco más y más herramientas, podemos acceder, por ejemplo, al nombre de esa instancia. 249 00:16:20,710 --> 00:16:38,429 ¿Eso qué significa? Que si decimos, vale, aparte de guardar esta instancia con el nombre de instancia, yo quiero que esta instancia tenga el nombre, ¿vale? El nombre del objeto, del GameObject y que se llame hola, ¿vale? Voy a probar a ejecutarlo y ahora vemos su utilidad de esta línea. 250 00:16:39,129 --> 00:16:49,289 Si yo arranco este juego, vais a ver, bueno, lo primero que algo se cae porque le puse el Rigipodi, ¿vale? 251 00:16:49,289 --> 00:16:51,309 Ya veis que al meter un componente está haciendo algo. 252 00:16:51,429 --> 00:16:55,950 Pero lo importante, la nave ahora no se llama clon como se llamaba antes, ahora se llama hola. 253 00:16:56,370 --> 00:16:59,850 Y aquí está dentro todo lo de la nave, el prefab que habíamos ejecutado, ¿vale? 254 00:17:00,710 --> 00:17:05,430 Fijaos, y esto me sirve para ir introduciendo que las variables se pueden ir creando en muchos sitios, 255 00:17:05,430 --> 00:17:07,309 que aquí he puesto varias juntas 256 00:17:07,309 --> 00:17:09,289 y si por ejemplo examináis 257 00:17:09,289 --> 00:17:11,390 que esto también lo iremos viendo en el script 258 00:17:11,390 --> 00:17:13,990 de la unidad 0 de la tarea que os he dejado 259 00:17:13,990 --> 00:17:15,269 como referencia 260 00:17:15,269 --> 00:17:17,349 habrá variables que se van generando al principio 261 00:17:17,349 --> 00:17:19,829 para tenerlas todas, digamos, usables 262 00:17:19,829 --> 00:17:21,869 a lo largo de todo el proyecto, pero también en momentos 263 00:17:21,869 --> 00:17:23,789 nos puede interesar que esa variable 264 00:17:23,789 --> 00:17:25,450 se cree al empezar el juego 265 00:17:25,450 --> 00:17:27,430 en este momento se crea esta instancia 266 00:17:27,430 --> 00:17:28,670 de tipo GameObject 267 00:17:28,670 --> 00:17:31,269 y aquí hemos generado una instancia 268 00:17:31,269 --> 00:17:33,089 que, ojo, todavía no hemos resuelto 269 00:17:33,089 --> 00:17:35,190 qué diferencia hay entre esto y esto 270 00:17:35,190 --> 00:17:37,109 Porque no hemos asignado nada de referencia 271 00:17:37,109 --> 00:17:38,269 Bueno, está ahí preparado 272 00:17:38,269 --> 00:17:40,109 Pero no lo hemos llegado a hacer 273 00:17:40,109 --> 00:17:43,769 A ver, que detengo esto 274 00:17:43,769 --> 00:17:47,910 Y aquí está esperando 275 00:17:47,910 --> 00:17:48,910 A que sigamos trabajando 276 00:17:48,910 --> 00:17:51,210 Ahora sí que está cogiendo una referencia 277 00:17:51,210 --> 00:17:53,809 Ahora usamos a conveniencia 278 00:17:53,809 --> 00:17:55,710 Lo que queramos, pero lo importante es 279 00:17:55,710 --> 00:17:57,190 Que una vez guardamos 280 00:17:57,190 --> 00:17:58,990 Una instancia de tipo GameObject 281 00:17:58,990 --> 00:18:01,730 También podemos acceder a las propiedades de ese GameObject 282 00:18:01,730 --> 00:18:02,910 Como acabamos de hacer aquí 283 00:18:02,910 --> 00:18:20,890 Entonces, vamos a hacer un poco la lógica que pone aquí que tiene usar esta sobrecarga de Instanced, que es que crea una instancia a la posición del objeto de referencia, que es este segundo que tenemos aquí, y como hijo suyo, es decir, de esta referencia. 284 00:18:20,890 --> 00:18:23,589 todo esto yo me lo sé, aparte de porque 285 00:18:23,589 --> 00:18:25,650 ya lo he usado más veces, porque os vuelvo a repetir 286 00:18:25,650 --> 00:18:27,650 que si vamos pasando por las 287 00:18:27,650 --> 00:18:29,630 sobrecargas, que en este 288 00:18:29,630 --> 00:18:29,990 caso 289 00:18:29,990 --> 00:18:33,289 es esta la que estamos usando 290 00:18:33,289 --> 00:18:35,450 nos pide un GameObject, aquí lo pone como 291 00:18:35,450 --> 00:18:37,470 Object, cuando pone Object significa GameObject 292 00:18:37,470 --> 00:18:38,730 es otra forma de llamarlo 293 00:18:38,730 --> 00:18:40,730 y bueno, si luego 294 00:18:40,730 --> 00:18:43,609 es que no quiero liar más la madeja 295 00:18:43,609 --> 00:18:45,549 necesita un objeto que es el que 296 00:18:45,549 --> 00:18:47,009 va a referenciar y luego 297 00:18:47,009 --> 00:18:49,210 un transform que va a ser ese padre, pone 298 00:18:49,210 --> 00:18:55,509 clona el objeto existente y retorna el clon. Si quisiéramos saber más, esto ya lo comenté el otro día, 299 00:18:55,970 --> 00:19:05,490 saber más de qué hace cada método, la buena forma de hacerlo es meternos en el API, en el manual de uso, 300 00:19:05,490 --> 00:19:15,789 del código, desde el propio Google se puede hacer. Si ponemos el método o la propiedad que queramos consultar 301 00:19:15,789 --> 00:19:29,130 Y ponemos Unity después, lo primero que va a poner va a ser, digamos, el acceso a cómo se usa este elemento o este método. 302 00:19:29,569 --> 00:19:31,750 Aquí veis que vienen ya varias sobrecargas. 303 00:19:32,089 --> 00:19:39,190 Y si vamos pasando, aquí pone Object Original, que aquí es lo mismo que ponía en el IntelliSense, que hemos visto antes en el código. 304 00:19:39,349 --> 00:19:44,650 Y aquí sí que podemos ir más con detalle, por si tenemos dudas, ir viendo qué significa cada cosa. 305 00:19:44,650 --> 00:20:13,529 Pues oye, es algo de tipo objeto de GameObject, no podemos meterle otra cosa, quiere un GameObject aquí. Y en original es el nombre que le ha dado a esta variable, digamos, a este parámetro que está esperando que hagamos algo con él, ¿vale? Y aquí si bajamos en los parámetros nos dice, vale, lo que yo ponga como original, que es en todas estas, en esta posición de los parámetros, dice un objeto existente del que quieras hacer una copia, ¿vale? Pues ya sabemos que aquí habría que meter ese objeto que queremos copiar, ¿vale? 306 00:20:13,529 --> 00:20:15,509 Cuando pone parent, pues podemos ir a parent. 307 00:20:15,990 --> 00:20:19,210 Padre que será asignado al nuevo objeto, ¿vale? 308 00:20:19,250 --> 00:20:22,329 Pues aquí meteremos un transform, ¿vale? 309 00:20:22,329 --> 00:20:23,910 Y ese será padre en este caso. 310 00:20:24,509 --> 00:20:26,170 Podemos hacer igual con más tipos. 311 00:20:26,690 --> 00:20:33,049 Para que vayáis viendo cómo se usa, aquí os puedo ir diciendo más, pues más, digamos, 312 00:20:33,150 --> 00:20:35,109 características de, en este caso, instantiate. 313 00:20:35,470 --> 00:20:38,410 Y si vais bajando, incluso, podréis ir viendo ejemplos, ¿vale? 314 00:20:38,750 --> 00:20:42,089 El problema de los ejemplos igual a estas alturas es que son siempre más avanzados, 315 00:20:42,089 --> 00:20:45,950 pero a medida que vayáis teniendo más bagaje 316 00:20:45,950 --> 00:20:47,750 iréis entendiendo más todos los ejemplos 317 00:20:47,750 --> 00:20:49,990 fijaos que luego incluso instantiate 318 00:20:49,990 --> 00:20:53,289 bueno, yo lo he hecho así un poco a las bravas 319 00:20:53,289 --> 00:20:55,289 pero incluso fijaos que instantiate 320 00:20:55,289 --> 00:20:56,670 si lo vuelvo a declarar aquí 321 00:20:56,670 --> 00:20:58,549 tiene más tipos, ¿vale? 322 00:20:58,549 --> 00:21:00,470 con estas llavecicas que se abren aquí 323 00:21:00,470 --> 00:21:01,809 y si me pongo encima 324 00:21:01,809 --> 00:21:04,049 pues no da muchas descripciones 325 00:21:04,049 --> 00:21:06,049 y en ese caso para desambiguar 326 00:21:06,049 --> 00:21:07,069 para saber qué significa 327 00:21:07,069 --> 00:21:09,670 pues tendríamos que meternos nuevamente 328 00:21:09,670 --> 00:21:11,430 en el manual o en la API 329 00:21:11,430 --> 00:21:33,150 Aquí más abajo están las declaraciones de este estático, que es diferente. En vez de un objeto tiene una referencia de tipo. Esto ahora mismo nos da un poco igual, pero sí que me sirve para que vayáis viendo que las sobrecargas se pueden ir entendiendo mejor si vamos viendo este manual. 330 00:21:33,150 --> 00:21:51,430 Y luego, importante, aquí arriba en la documentación de Unity, que es a donde os va a referenciar si ponéis la propiedad, el parámetro, la función seguida de Unity en Google, podéis acceder al API, que es donde os va a decir el uso, digamos, a nivel de programación, como estamos haciendo ahora mismo, y también al manual. 331 00:21:51,430 --> 00:21:55,309 es el manual del programa 332 00:21:55,309 --> 00:21:58,049 para acceder al manual de esta operación 333 00:21:58,049 --> 00:21:59,390 en vez de hacerlo desde aquí 334 00:21:59,390 --> 00:22:00,690 se puede cambiar a manual 335 00:22:00,690 --> 00:22:02,430 que si tiene una sección en el manual 336 00:22:02,430 --> 00:22:04,009 del propio programa 337 00:22:04,009 --> 00:22:06,609 os puede contar una descripción 338 00:22:06,609 --> 00:22:07,950 que no está tan basada en el código 339 00:22:07,950 --> 00:22:08,890 sino del uso 340 00:22:08,890 --> 00:22:12,789 esto lamentablemente no suele estar en español 341 00:22:12,789 --> 00:22:14,250 igual que el software en sí 342 00:22:14,250 --> 00:22:15,470 el Unity no está en español 343 00:22:15,470 --> 00:22:16,210 pero bueno 344 00:22:16,210 --> 00:22:18,589 con poco a poco en inglés 345 00:22:18,589 --> 00:22:20,390 es bastante técnico 346 00:22:20,390 --> 00:22:43,069 pero bueno, se puede ir traduciendo y veis que aquí un poco ya va explicando qué hace. Nuevamente, estas explicaciones a veces pueden pecar un poco de... muy técnicas en el momento que nos encontramos, pero sí que nos puede dar ciertas pistas, ¿vale? A lo mejor hay líneas que empieza a hablar de herencia, de, bueno, behavior. Bueno, pues esto no sé, si seguimos seguramente algo iremos pillando y poco a poco podremos seguir avanzando, ¿vale? 347 00:22:43,069 --> 00:22:53,950 Que me importaba ver un poco qué significan estos nombres que aparecen bajo original, position, veis en la sobrecarga, pone object original. 348 00:22:54,089 --> 00:23:01,650 Pues original es un nombre que sirve de referencia para luego ver en la API qué significa o qué te está pidiendo en cada momento, ¿vale? 349 00:23:02,470 --> 00:23:05,609 Vuelvo aquí, ¿vale? 350 00:23:05,970 --> 00:23:11,829 Si seguimos viendo esto, nos falta decirle cuál es la referencia de este prefab, ¿vale? 351 00:23:11,829 --> 00:23:27,809 Y la referencia que nosotros queramos. Aquí la tenemos preparada, la variable, para usarla, pero todavía no lo estamos haciendo bien porque aquí os lo he puesto como ejemplo. La voy a quitar, ¿vale? Si dais a este circulito podéis decirle que no queréis ninguna, que es como estaba. 352 00:23:27,809 --> 00:23:30,490 y claro, yo lo que voy a querer en cierto momento 353 00:23:30,490 --> 00:23:32,289 es usar las capacidades 354 00:23:32,289 --> 00:23:32,950 que me está dando 355 00:23:32,950 --> 00:23:36,009 esa sobrecarga de Instantiate 356 00:23:36,009 --> 00:23:38,569 para decirle yo el punto en el que quiero que se instancie 357 00:23:38,569 --> 00:23:40,890 no quiero que se instancie a lo mejor en el 0, 0, 0 358 00:23:40,890 --> 00:23:41,630 ¿vale? 359 00:23:42,049 --> 00:23:44,150 sino que yo quiero que se instancie donde 360 00:23:44,150 --> 00:23:46,470 punto, ¿vale? estoy generando 361 00:23:46,470 --> 00:23:48,349 un GameObject vacío, recordad 362 00:23:48,349 --> 00:23:50,450 que igual que se pueden generar estos cubos 363 00:23:50,450 --> 00:23:51,970 y estos elementos con los que habéis 364 00:23:51,970 --> 00:23:53,750 hecho el prefab de la nave 365 00:23:53,750 --> 00:23:56,470 puede generar un vacío, un empty 366 00:23:56,470 --> 00:23:58,369 que es como los nulos en los softwares de 3D 367 00:23:58,369 --> 00:24:00,529 que sirve simplemente para tener una referencia 368 00:24:00,529 --> 00:24:02,470 en el espacio, no contiene nada más allá 369 00:24:02,470 --> 00:24:04,309 de una referencia del espacio 370 00:24:04,309 --> 00:24:06,069 y lo voy a llamar 371 00:24:06,069 --> 00:24:08,329 borro este que he generado dos en el proceso 372 00:24:08,329 --> 00:24:10,890 lo voy a llamar punto referencia 373 00:24:10,890 --> 00:24:12,329 para saber bien que es ese 374 00:24:12,329 --> 00:24:14,609 y ojo que cuando generamos un nuevo 375 00:24:14,609 --> 00:24:16,609 empty object o cualquier elemento 376 00:24:16,609 --> 00:24:19,009 puede no estar ubicado en el 0,0 377 00:24:19,009 --> 00:24:20,710 que de partear no nos gustaría 378 00:24:20,710 --> 00:24:22,410 nos lo pone en el centro del visor 379 00:24:22,410 --> 00:24:25,109 donde estamos mirando, vale, ojo que suelen ir 380 00:24:25,109 --> 00:24:27,049 ya a las posiciones 381 00:24:27,049 --> 00:24:29,269 modificadas, si queremos 382 00:24:29,269 --> 00:24:31,170 colocar algo en origen 383 00:24:31,170 --> 00:24:33,369 en el 0,0, en los 3 384 00:24:33,369 --> 00:24:35,349 puntos de ese componente, si le damos 385 00:24:35,349 --> 00:24:37,210 a reset, se colocará ahí, ¿vale? 386 00:24:38,210 --> 00:24:39,349 vale, esto lo he 387 00:24:39,349 --> 00:24:41,150 hecho un poco para que veáis el punto de partida 388 00:24:41,150 --> 00:24:43,230 pero, ahora lo que puedo hacer 389 00:24:43,230 --> 00:24:45,150 es decir, no, yo quiero que este elemento, la nave 390 00:24:45,150 --> 00:24:47,309 se instancie en el 391 00:24:47,309 --> 00:24:48,930 y lo voy a meter a mano 392 00:24:48,930 --> 00:24:51,089 menos 40 y en i 393 00:24:51,089 --> 00:24:53,130 10, ¿vale? porque es donde 394 00:24:53,130 --> 00:24:53,930 yo quiero que comience 395 00:24:53,930 --> 00:24:59,009 y en Z incluso vamos a ponerle un 15 396 00:24:59,009 --> 00:25:01,470 el punto que sea, da un poco igual 397 00:25:01,470 --> 00:25:05,190 esto lo que nos va a permitir es que luego cuando nosotros digamos 398 00:25:05,190 --> 00:25:07,690 que este GameObject, punto de referencia 399 00:25:07,690 --> 00:25:11,769 y teniendo aquí abierta esta en el inspector 400 00:25:11,769 --> 00:25:13,869 donde tenemos el código y las variables preparadas 401 00:25:13,869 --> 00:25:16,809 arrastramos ese objeto 402 00:25:16,809 --> 00:25:20,269 lo que va a hacer es coger el transform de este punto de referencia 403 00:25:20,269 --> 00:25:22,930 que nosotros hemos ubicado donde queremos que esté 404 00:25:22,930 --> 00:25:37,950 ¿Vale? Entonces, ahora mismo ya tenemos preparada una referencia que se coge con esta variable referencia y que nosotros usamos aquí como segundo parámetro, ¿vale? Del instant shade. 405 00:25:37,950 --> 00:25:39,849 si yo ahora ejecuto el juego 406 00:25:39,849 --> 00:25:41,950 va a hacer dos cosas, como bien dice aquí 407 00:25:41,950 --> 00:25:44,470 crea una estancia en la posición del objeto de referencia 408 00:25:44,470 --> 00:25:46,869 en esta ubicación 409 00:25:46,869 --> 00:25:47,569 que acabamos de poner 410 00:25:47,569 --> 00:25:50,289 y como hijo suyo además, tiene una pequeña 411 00:25:50,289 --> 00:25:51,410 sutileza 412 00:25:51,410 --> 00:25:54,369 entonces, yo cuando ahora arranque el juego 413 00:25:54,369 --> 00:25:54,970 vais a ver 414 00:25:54,970 --> 00:25:57,970 que esa nave 415 00:25:57,970 --> 00:26:00,329 primero se ha colocado, si recordáis 416 00:26:00,329 --> 00:26:01,549 en este punto donde está 417 00:26:01,549 --> 00:26:04,450 punto de referencia y además se ha hecho su hijo 418 00:26:04,450 --> 00:26:05,910 ¿vale? se llama hola 419 00:26:05,910 --> 00:26:07,930 porque en el código hemos dicho 420 00:26:07,930 --> 00:26:09,589 que la instancia 421 00:26:09,589 --> 00:26:11,730 que el nombre de esa instancia sea 422 00:26:11,730 --> 00:26:13,170 hola, vale 423 00:26:13,170 --> 00:26:15,650 entonces ved que no es lo mismo 424 00:26:15,650 --> 00:26:17,609 tener activo este 425 00:26:17,609 --> 00:26:19,869 esta instanciación 426 00:26:19,869 --> 00:26:21,589 bien referenciado todo 427 00:26:21,589 --> 00:26:24,230 que simplemente generar el instant shade 428 00:26:24,230 --> 00:26:25,890 a secas, vale, esto me sirve para que 429 00:26:25,890 --> 00:26:27,450 poco a poco vayáis viendo que 430 00:26:27,450 --> 00:26:29,309 lo que hay dentro de estos 431 00:26:29,309 --> 00:26:31,849 paréntesis 432 00:26:31,849 --> 00:26:33,890 en un método, vale 433 00:26:33,890 --> 00:26:35,490 pues influye 434 00:26:35,490 --> 00:26:38,609 un método o una función que son lo mismo 435 00:26:38,609 --> 00:26:40,109 ya os comenté el otro día 436 00:26:40,109 --> 00:26:42,250 que son digamos 437 00:26:42,250 --> 00:26:44,670 operaciones de acción de algo que ocurre 438 00:26:44,670 --> 00:26:46,089 en este caso vamos a instanciar 439 00:26:46,089 --> 00:26:47,990 en este caso esto es otro método 440 00:26:47,990 --> 00:26:50,049 que sirve para marcar 441 00:26:50,049 --> 00:26:51,809 que va a ocurrir al empezar el juego 442 00:26:51,809 --> 00:26:53,630 o al iniciarse este script 443 00:26:53,630 --> 00:26:55,990 recordad que era cuando el objeto se iniciaba 444 00:26:55,990 --> 00:26:58,190 y si veis cuando hay un método 445 00:26:58,190 --> 00:27:00,490 tiene pues el nombre 446 00:27:00,490 --> 00:27:01,569 de esa acción que va a hacer 447 00:27:01,569 --> 00:27:04,130 y siempre va a ir a continuación 448 00:27:04,130 --> 00:27:08,230 un paréntesis, ¿vale? A veces vacío, a veces lleno. 449 00:27:08,910 --> 00:27:12,490 Pero cuando vemos una palabra que está escrita en mayúsculas, 450 00:27:12,970 --> 00:27:15,089 la primera letra, y luego tiene paréntesis, 451 00:27:15,450 --> 00:27:17,970 eso significa que estamos usando lo que se llama un método función. 452 00:27:18,450 --> 00:27:20,190 Es decir, una acción que vamos a hacer. 453 00:27:20,789 --> 00:27:22,329 ¿Vale? Que no es lo mismo que si yo pongo 454 00:27:22,329 --> 00:27:30,109 transform position igual a referencia. 455 00:27:30,109 --> 00:27:49,829 Que esto básicamente, a ver, reference position, había que aprender. Esto ya os explicaré un poco más qué es, pero al final no es lo mismo decir, oye, instanciate aquí y tal cosa, que en esta línea que no vemos ni un solo paréntesis. 456 00:27:49,829 --> 00:28:00,930 Esto significa que aquí no hay ningún método. Los paréntesis pueden indicar más cosas, pero en lo general son métodos o funciones, ¿vale? Ahora volveremos otra vez a los métodos. 457 00:28:00,930 --> 00:28:25,730 Entonces, ya simplemente por terminar, esta explicación como de las sobrecargas que puede tener Instantiate, tenemos una tercera forma de instanciar, comento todo menos esta última, que yo sé que es, y borro todo lo relacionado con los comentarios, 458 00:28:25,730 --> 00:28:31,470 que es que crea una instancia en el punto de referencia, pero sin rotación, ¿vale? 459 00:28:32,470 --> 00:28:41,170 Vale, aquí si os fijáis tenemos tres elementos, y es igual que el anterior, en el sentido de que el primero de ellos es el prefab, ¿vale? 460 00:28:41,309 --> 00:28:49,349 Y voy a ir a la API un segundo, de Instantiate, que la tenía por aquí abierta, si no me equivoco, aquí está, ¿vale? 461 00:28:49,349 --> 00:29:12,109 Esta es la primera que hemos usado, esta es la segunda y ahora vamos a ir a esta tercera, ¿vale? Esta no la saltamos porque tampoco aporta mucho, pero aquí básicamente nos pide, ¿vale? Un objeto. Ahora, el segundo parámetro, aunque es parecido, es una posición, ¿vale? De tipo vector 3. Esto es verdad que todavía no lo hemos visto. 462 00:29:12,109 --> 00:29:26,390 Y luego la rotación. Esto ahora mismo es un poco enrevesado y por eso no voy a meterme mucho. Volvemos a ello si queréis más adelante. Pero esta sobrecarga, al final, lo que me está pidiendo son otro tipo de valores. 463 00:29:26,390 --> 00:29:44,509 Entonces, si os fijáis, incluso aquí, cuando vemos esta referencia, aquí no me está pidiendo un transform completo, como sí que hacía en la otra sobrecarga. Aquí me pedía el transform completo del objeto que iba a ser el padre. 464 00:29:44,509 --> 00:29:58,410 Aquí me pide solo la posición. Entonces quiero que vayáis también teniendo en la cabeza que ciertos parámetros tienen más parámetros dentro, como hemos dicho antes, que podemos ir abriendo con punto. 465 00:29:58,410 --> 00:30:12,490 Porque pensad una cosa, si me está pidiendo la posición de un elemento y yo tengo un transform en referencia, yo al final lo que estoy haciendo es, en este transform, estoy cogiendo todo lo que hay en este componente. 466 00:30:12,490 --> 00:30:41,490 La posición, la rotación y la escala, que al final son tres valores de la posición, tres valores de la rotación y tres valores de la escala, ¿verdad? Entonces, cuando me piden solo la posición, vais a ver que al final lo que estoy haciendo aquí es decirle, vale, de este transform que yo he llamado reference, solo voy a coger la posición, porque si intento meter todo, esto me da fallo, porque dice, vale, no sé de todo lo que tiene dentro en la posición o en la rotación, 467 00:30:42,490 --> 00:30:50,309 pues yo qué sé, si yo pongo aquí rotation, veis que puedo meter la rotación, ¿vale? 468 00:30:50,309 --> 00:30:56,049 Me da fallo también por otras sutilezas, porque habría que ponerlo en ángulo Seuler, 469 00:30:56,190 --> 00:30:58,710 básicamente, que es una cosa que ya veremos en este tema, ¿vale? 470 00:30:59,210 --> 00:31:03,490 Pero veis que a medida que yo le voy dando la instrucción correcta, 471 00:31:03,730 --> 00:31:07,490 esto me puede dar que algo se puede ejecutar o no, ¿vale? 472 00:31:07,809 --> 00:31:11,890 Sutilezas, que a veces hay que ir pensando, ¿qué valores estoy guardando en este transform? 473 00:31:11,890 --> 00:31:31,890 Bueno, pues estoy guardando los de posición, los de rotación, los de escala y aquí solo me pide posición, ¿vale? Y luego aquí, bueno, me pide la rotación, que esto sí que es verdad que es más avanzado, entonces no me voy a meter mucho, pero aquí básicamente con esta instrucción estoy diciéndole, cógeme la rotación que tenga por defecto el objeto, ¿vale? 474 00:31:31,890 --> 00:31:50,250 Entonces yo cuando use este método de instanciación vais a ver que a diferencia de antes, cuando yo lo genero, me lo genera la posición, pero ahora no es hijo de nada, no es hijo del punto de referencia como ocurría antes, que lo usaba como padre. 475 00:31:50,250 --> 00:32:08,710 E igualmente, como no estoy poniendo que esta instancia sea una caja a la que yo puedo cambiar el nombre, pues no se llama hola, se llama nave prefab clon, que es el nombre genérico que ha cogido del objeto. Cuando le hemos metido aquí el objeto, como se llama nave prefab, pues dice, vale, por de nave prefab he hecho un clon. 476 00:32:08,710 --> 00:32:27,450 Hasta aquí un poco lo relacionado con Instantiate. Cuando ya vayáis entendiendo cómo se usan más métodos, pues Instantiate lo iréis entendiendo mucho mejor. Voy a otro archivo que tengo aquí preparado para ir al tema 0, que es el que me interesa en esta tutoría, si no tenéis más dudas de la tarea del tema 1. 477 00:32:27,450 --> 00:32:31,589 vale, vamos al tema 478 00:32:31,589 --> 00:32:34,369 cero, voy a guardar 479 00:32:34,369 --> 00:32:35,789 vale, recordad esta esterilla 480 00:32:35,789 --> 00:32:38,289 esta pequeña 481 00:32:38,289 --> 00:32:39,849 estrella y voy a ello 482 00:32:39,849 --> 00:32:42,250 vale, tengo 483 00:32:42,250 --> 00:32:44,089 aquí otro script que simplemente 484 00:32:44,089 --> 00:32:44,990 va a servir para 485 00:32:44,990 --> 00:32:46,710 para 486 00:32:46,710 --> 00:32:49,329 practicar ahora, no va a tener 487 00:32:49,329 --> 00:32:51,789 como hemos hecho ahora en InstanceAid que se ve 488 00:32:51,789 --> 00:32:53,410 un resultado claro en el visor 489 00:32:53,410 --> 00:32:55,470 pero me sirve para que vayamos entendiendo mejor 490 00:32:55,470 --> 00:32:57,049 qué tipos de variables existen 491 00:32:57,049 --> 00:32:59,630 y usos y aplicaciones que se pueden hacer. 492 00:32:59,890 --> 00:33:04,369 De momento quizá un poco abstractas en el sentido de, pues solo estamos viendo sumas y restas, 493 00:33:04,970 --> 00:33:07,309 pero luego es que esas sumas y restas, como dije el otro día, 494 00:33:07,390 --> 00:33:12,849 puede ser como sube y baja el número de puntos que tiene un contador, ¿vale? 495 00:33:12,849 --> 00:33:14,289 Y se va a basar un poco en lo mismo. 496 00:33:14,589 --> 00:33:18,690 Entonces, recordad, a ver, que creo que alguien se ha metido, perdonad, 497 00:33:19,529 --> 00:33:22,369 o se ha salido, no lo sé, vale. 498 00:33:22,369 --> 00:33:25,609 recordad cómo se generaba un script 499 00:33:25,609 --> 00:33:27,609 que es, lo voy a hacer en esta 500 00:33:27,609 --> 00:33:29,250 carpeta de script que tengo aquí preparada 501 00:33:29,250 --> 00:33:31,309 durante la tutoría, pues yo hago 502 00:33:31,309 --> 00:33:32,829 este script 503 00:33:32,829 --> 00:33:35,730 recordad que en este cesar script 504 00:33:35,730 --> 00:33:37,609 podemos generar un script que vamos 505 00:33:37,609 --> 00:33:38,670 a llamar 506 00:33:38,670 --> 00:33:41,069 durante, recordad 507 00:33:41,069 --> 00:33:43,730 que el nombre que vayamos 508 00:33:43,730 --> 00:33:45,609 asignando aquí, luego debe ser el mismo 509 00:33:45,609 --> 00:33:47,609 de la clase de dentro del script, esto ya lo he 510 00:33:47,609 --> 00:33:49,769 dicho como en dos tutorías previas, por tanto 511 00:33:49,769 --> 00:33:51,549 entiendo que no habrá 512 00:33:51,549 --> 00:33:56,109 problema y además en el tema cero va poniendo buenas prácticas de cómo 513 00:33:56,109 --> 00:34:03,250 escribir las los nombres de los scripts los nombres de las 514 00:34:03,250 --> 00:34:08,250 de los métodos de las variables vale y habla de una cosa que es el pascal case 515 00:34:08,250 --> 00:34:15,489 y el camel case vale cuando generamos una clase o lo que es lo mismo generamos 516 00:34:15,489 --> 00:34:18,730 dentro de Unity un script 517 00:34:18,730 --> 00:34:23,170 siempre, lo digo porque luego nos va a ayudar a que todo sea más fácil 518 00:34:23,170 --> 00:34:27,289 de ir siguiendo, siempre deberíamos empezar a escribir el nombre del script 519 00:34:27,289 --> 00:34:31,130 con mayúscula. Y a diferencia de 520 00:34:31,130 --> 00:34:35,369 nuestro lenguaje del día a día, los espacios no existen 521 00:34:35,369 --> 00:34:39,090 o no se usan correctamente cuando estamos escribiendo órdenes. 522 00:34:39,090 --> 00:34:42,530 Si os fijáis, todo lo que os he ido enseñando antes no había espacios 523 00:34:42,530 --> 00:34:43,969 había muy pocos 524 00:34:43,969 --> 00:34:46,309 hasta que no termine de escribir esto no quiero 525 00:34:46,309 --> 00:34:48,989 volver a enseñaros en script 526 00:34:48,989 --> 00:34:50,969 pero vais a ver que normalmente 527 00:34:50,969 --> 00:34:52,929 se escriben las palabras juntas 528 00:34:52,929 --> 00:34:54,449 ¿y cómo se distingue que una palabra 529 00:34:54,449 --> 00:34:59,130 pues hay un espacio 530 00:34:59,130 --> 00:35:01,210 entre ellos? en vez de dar el típico espacio 531 00:35:01,210 --> 00:35:02,789 que hacemos con la barra espaciadora 532 00:35:02,789 --> 00:35:04,889 lo que hacemos es empezar la siguiente palabra 533 00:35:04,889 --> 00:35:06,190 con mayúscula durante 534 00:35:06,190 --> 00:35:08,269 la tutoría 535 00:35:08,269 --> 00:35:10,869 importante, lo que son tildes 536 00:35:10,869 --> 00:35:12,070 y eñes 537 00:35:12,070 --> 00:35:15,230 no las uséis nunca en nada relacionado con 538 00:35:15,230 --> 00:35:17,449 programación, me explico 539 00:35:17,449 --> 00:35:19,449 incluso aunque esto sea el nombre de un script 540 00:35:19,449 --> 00:35:21,389 recordad que, vale, guardo 541 00:35:21,389 --> 00:35:23,510 y se genera, que cuando yo genero 542 00:35:23,510 --> 00:35:25,469 este script al final estoy realizando 543 00:35:25,469 --> 00:35:27,570 un código cuyo nombre 544 00:35:27,570 --> 00:35:29,289 de clase también está dentro 545 00:35:29,289 --> 00:35:31,570 del código, si yo empiezo a poner tildes 546 00:35:31,570 --> 00:35:33,369 esto va a empezar a dar ciertos 547 00:35:33,369 --> 00:35:35,030 problemas, vale, y aunque ahora 548 00:35:35,030 --> 00:35:36,949 parezca a lo mejor que no lo da 549 00:35:36,949 --> 00:35:39,130 tarde o temprano lo va a dar, igual 550 00:35:39,130 --> 00:35:40,889 sucede si ponemos una ñ 551 00:35:40,889 --> 00:36:02,210 O si ponemos un signo que no esté reconocido, que pueda haber algunos. Entonces, atención. Fijaos que siempre he escrito con la primera letra mayúscula en lo que se llama Pascal Case. Pascal fue un, si no recuerdo mal, un matemático. Y como es un nombre propio, por eso se llama así, con mayúscula. Pascal Case. 552 00:36:02,210 --> 00:36:16,610 Que no es lo mismo si nos fijamos a lo que hemos estado... Bueno, y fijaos también que los métodos, los de los paréntesis, también van con mayúsculas. Es decir, instantiate existe con mayúsculas, ¿vale? Pero si yo me pongo a buscarlos con minúscula, no existe. 553 00:36:16,610 --> 00:36:32,710 Es decir, sí que intenta ayudarme diciéndome que esto está en mayúsculas, pero vais a ver que yo cuando lo ponga, me lo ponen en mayúsculas. Los métodos, esas palabras que sirven para indicar que se ejecute una acción, que van con estos paréntesis, siempre empiezan a escribirse con mayúsculas. 554 00:36:32,710 --> 00:36:37,869 Y lo mismo, si Instanciate tuviera otra palabra, sería InstanciateDouble, yo que sé. 555 00:36:38,510 --> 00:36:46,869 Pues no se separa, no se separa así, porque esto significa hacer dos instrucciones distintas o otro tipo de orden. 556 00:36:47,389 --> 00:36:51,429 Si es solo una orden llamada InstanciateDouble, no hay espacio en el medio. 557 00:36:52,190 --> 00:36:59,130 Se van separando, digamos, marcando la separación de palabras con esta mayúscula, que va separando estas palabras. 558 00:36:59,130 --> 00:37:23,190 Del mismo modo, si pongo el script que hemos estado viendo antes, si os fijáis, ojo, las clases, y os recuerdo que siempre digo que esto es una clase, el nombre que le ponemos al script es una clase. 559 00:37:23,190 --> 00:37:47,170 Y estos son clases que os recuerdo que si le dais con la letra control os podéis meter, ¿vale? Esto es simplemente curiosidad. Y podéis ver todo el código que digamos ya alguien ha preparado para que nosotros podamos usarlo, ¿vale? Vuelvo aquí. Entonces, cuando generamos clases, fijaos cómo es la gramática de esta declaración del tipo de variable que es una clase, ¿no? Como hemos dicho antes. Una G mayúscula y para separar, mayúscula, ¿no? 560 00:37:47,170 --> 00:37:58,449 Y luego aquí hay un espacio que si yo no pusiera significa que es todo la misma palabra, ¿vale? Y daría fallo porque significa otra cosa. Cuidado, los espacios se usan, se deben usar cuando se deben usar. 561 00:37:58,449 --> 00:38:12,789 Y las variables, por convención, se escriben del mismo modo, pero empezando en minúscula. Igual que instant set va con mayúscula, fijaos que my prefab, cuando lo hemos declarado aquí al principio, va con minúscula. 562 00:38:12,789 --> 00:38:14,590 igual cuando queramos 563 00:38:14,590 --> 00:38:17,090 separar 564 00:38:17,090 --> 00:38:19,090 veis que el my bien, porque es el nombre 565 00:38:19,090 --> 00:38:21,010 que le hemos dado a GameObject, pero este prefab aquí 566 00:38:21,010 --> 00:38:23,010 no pinta nada, para que lo interprete 567 00:38:23,010 --> 00:38:24,829 como el nombre de la caja, aunque sean dos palabras 568 00:38:24,829 --> 00:38:26,869 distintas, empieza con minúscula 569 00:38:26,869 --> 00:38:28,429 y para separar las palabras 570 00:38:28,429 --> 00:38:30,429 hay que poner una mayúscula aquí 571 00:38:30,429 --> 00:38:32,949 y os lo dije el otro día, y si no os habéis dado cuenta 572 00:38:32,949 --> 00:38:34,929 fijaos, si está preparado esto 573 00:38:34,929 --> 00:38:37,010 que aunque no dejemos esos espacios 574 00:38:37,010 --> 00:38:37,889 el propio 575 00:38:37,889 --> 00:38:41,230 el propio Unity 576 00:38:41,230 --> 00:38:43,210 ya va viendo donde meter los espacios 577 00:38:43,210 --> 00:38:45,130 aquí nos ha metido un espacio en donde 578 00:38:45,130 --> 00:38:47,130 en el nombre del script no lo había, recordad 579 00:38:47,130 --> 00:38:49,070 o incluso en 580 00:38:49,070 --> 00:38:51,250 el my prefab, que es el 581 00:38:51,250 --> 00:38:53,150 nombre de la variable que hemos puesto, la m 582 00:38:53,150 --> 00:38:55,110 si la ha puesto en mayúsculas y ha puesto 583 00:38:55,110 --> 00:38:56,670 este espacio, fijaos 584 00:38:56,670 --> 00:38:58,489 que el propio software 585 00:38:58,489 --> 00:39:00,989 sabe interpretarlo, entonces nosotros 586 00:39:00,989 --> 00:39:03,050 nos tenemos que hacer a la forma en la que tenemos 587 00:39:03,050 --> 00:39:04,989 que escribir el código, importante 588 00:39:04,989 --> 00:39:07,429 es decir, recapitulando, las clases 589 00:39:07,429 --> 00:39:09,210 barra, porque es lo mismo, scripts 590 00:39:09,210 --> 00:39:30,469 Entonces, siempre comenzando con mayúsculas, los métodos, a medida que vayamos sabiendo cómo llamarlos o cómo crearlos, también en mayúsculas, ¿vale? Y lo que son las variables en minúsculas, ¿vale? La diferencia de esto es que esto es PascalCase porque empieza en mayúscula y esto es lo que se llama CamelCase. 591 00:39:30,469 --> 00:39:51,050 Lo de camel porque aparece como la joroba de un camello. Esto también viene en los apuntes. Si os sirve para acordaros, pues camel case es cuando empieza en minúscula. Pascal case cuando es un nombre propio. Vamos un poco con durante la tutoría que son operaciones más básicas para ir viendo el tema cero. 592 00:39:51,050 --> 00:40:09,329 Vale, sobre las variables el otro día estuvimos ya hablando bastante, y de hecho aquí volvemos a hablar, de hecho lo de camel case está aquí puesto, que hay que darle un nombre a la variable, que cada uno puede tener un tipo de valor, que es lo que el otro día estuvimos hablando, que eran los ints, los floats, los strings, las cadenas. 593 00:40:09,329 --> 00:40:11,570 ¿Recordáis esto, verdad? Esto ya lo hemos visto 594 00:40:11,570 --> 00:40:13,230 Entonces más o menos 595 00:40:13,230 --> 00:40:14,969 Hasta aquí lo tenemos 596 00:40:14,969 --> 00:40:17,309 Hemos visto incluso ya tipos de variables 597 00:40:17,309 --> 00:40:19,210 De tipo clase, ¿no? Como este GameObject 598 00:40:19,210 --> 00:40:21,349 O este Transform en el que guardábamos 599 00:40:21,349 --> 00:40:23,849 La referencia que cogíamos por el inspector 600 00:40:23,849 --> 00:40:24,949 En el SerializeField 601 00:40:24,949 --> 00:40:26,849 ¿Sí? 602 00:40:27,510 --> 00:40:28,389 Por ejemplo 603 00:40:28,389 --> 00:40:30,909 Imaginaos que yo en el código 604 00:40:30,909 --> 00:40:33,869 ¿Vale? Aquí justo dentro de la clase 605 00:40:33,869 --> 00:40:35,570 Recordad que las llaves delimitan 606 00:40:35,570 --> 00:40:37,929 ¿Qué hay dentro de cada 607 00:40:37,929 --> 00:40:45,969 uno de los apartados del código vale y las clases vale cuando empezamos una 608 00:40:45,969 --> 00:40:50,949 clase vamos generando estas variables como he dicho antes que luego podrán ser 609 00:40:50,949 --> 00:40:56,550 usadas dentro de todo este bloque vale cuando vamos trabajando en un lenguaje 610 00:40:56,550 --> 00:41:03,369 como cesar vale al final existe un proceso bueno una lógica que es el 611 00:41:03,369 --> 00:41:07,489 encapsulamiento vale el encapsulamiento significa que dentro de estas llaves 612 00:41:07,489 --> 00:41:12,489 de cada uno de los bloques, de esta o de esta, que es otro bloque, o de este, que es otro bloque, 613 00:41:13,050 --> 00:41:18,050 podemos ir usando variables que queremos, nos puede interesar, que solo existan dentro de este bloque 614 00:41:18,050 --> 00:41:22,730 o que existan en este bloque y por defecto también existen los de dentro. 615 00:41:23,250 --> 00:41:28,349 El encapsulamiento sirve para que, digamos, partes del código se puedan comunicar entre sí o no. 616 00:41:28,829 --> 00:41:29,889 Esto también lo iremos viendo. 617 00:41:30,210 --> 00:41:33,670 Pero este concepto de encapsulamiento, si a alguien le interesa, existe. 618 00:41:33,670 --> 00:41:36,329 y ya me sirve para explicar eso, que cuando 619 00:41:36,329 --> 00:41:38,650 tenemos una clase que es donde vamos generando 620 00:41:38,650 --> 00:41:40,789 todas las instrucciones que hay dentro de este script 621 00:41:40,789 --> 00:41:42,769 pues ya vamos a lo mejor haciendo variables 622 00:41:42,769 --> 00:41:44,630 y esto es el script de 623 00:41:44,630 --> 00:41:46,710 el movimiento del jugador 624 00:41:46,710 --> 00:41:48,829 imaginaos que fuera esta la función de este 625 00:41:48,829 --> 00:41:50,730 script, que luego meteremos como 626 00:41:50,730 --> 00:41:53,050 componente al GameObject del jugador 627 00:41:53,050 --> 00:41:56,170 pues ese jugador a lo mejor 628 00:41:56,170 --> 00:41:58,550 vamos a querer que tenga una vida inicial 629 00:41:58,550 --> 00:42:00,710 ¿no? y quiero que 630 00:42:00,710 --> 00:42:02,489 esa vida inicial sea de 100 puntos 631 00:42:02,489 --> 00:42:10,590 imaginaos vale esto veis que yo por defecto si pongo un 100 no sirve para nada me da falla 100 632 00:42:10,590 --> 00:42:18,510 que no sabe que es incluso cuando empieza el juego yo puedo decir aquí 100 y punto y coma vale pero 633 00:42:18,510 --> 00:42:26,730 me va a decir 100 que no tenéis que ir entendiendo que es que los números y los datos no existen en 634 00:42:26,730 --> 00:42:31,889 el código no no son operativos hasta que no se encierran en una variable que es lo que ya vimos 635 00:42:31,889 --> 00:42:33,670 el otro día, si queremos 636 00:42:33,670 --> 00:42:35,909 generar una variable de la vida del 637 00:42:35,909 --> 00:42:37,769 personaje que guarde un valor 100 638 00:42:37,769 --> 00:42:40,030 ¿qué habría que generar? 639 00:42:40,730 --> 00:42:41,570 ¿o cómo sería? 640 00:42:42,309 --> 00:42:43,869 que esto el otro día un poco vimos 641 00:42:43,869 --> 00:42:47,880 una variable, ¿no? 642 00:42:48,340 --> 00:42:50,340 vale, ¿y cómo? dime un poco 643 00:42:50,340 --> 00:42:51,840 ¿cómo la genero? 644 00:42:52,239 --> 00:42:53,500 pues pones int 645 00:42:53,500 --> 00:42:56,019 vale, int, ahora la vemos 646 00:42:56,019 --> 00:42:58,380 espacio, vida 647 00:42:58,380 --> 00:43:00,179 o vidas 648 00:43:00,179 --> 00:43:00,840 igual a 100 649 00:43:00,840 --> 00:43:04,059 vale, mira, que me digas 650 00:43:04,059 --> 00:43:06,019 esto así, significa que ya has aprendido como se 651 00:43:06,019 --> 00:43:07,679 declara una variable muy bien 652 00:43:07,679 --> 00:43:09,219 aprendido, así que vamos a ello 653 00:43:09,219 --> 00:43:12,159 ¿por qué ha sido int y no float? 654 00:43:12,460 --> 00:43:13,440 o string o otra cosa 655 00:43:13,440 --> 00:43:15,199 porque es un número entero, ¿vale? 656 00:43:15,880 --> 00:43:17,199 entonces, también 657 00:43:17,199 --> 00:43:19,960 esto habría que ver el juego, pero la vida 658 00:43:19,960 --> 00:43:21,900 normalmente si tiene un valor como 659 00:43:21,900 --> 00:43:23,400 100 que es el máximo, acabo de decir 660 00:43:23,400 --> 00:43:26,099 y vamos a decir ya por defecto 661 00:43:26,099 --> 00:43:27,960 que la muerte es que llega al cero, ¿vale? 662 00:43:29,139 --> 00:43:29,940 pues normalmente 663 00:43:29,940 --> 00:43:32,360 en un contador de eso no va a ir tan fino como ir a decimales 664 00:43:32,360 --> 00:43:45,599 Entonces, para no complicar al programa, pues no declaramos un float, que si no recordamos, para refrescar un float, era un parámetro, una variable, perdonad, con decimales, ¿vale? 665 00:43:45,599 --> 00:43:51,539 Imaginaos que quisiera guardar una con decimales, y en ese caso, pues podríamos decir cosas como 5 con 5, ¿no? 666 00:43:52,280 --> 00:43:59,099 ¿Vale? Esto lo recordamos del otro día, que la f sirve para indicar que este punto al final es el separador de los decimales. 667 00:43:59,099 --> 00:44:10,199 Y si no lo ponemos, o ponemos una coma, veis que ya empieza a dar errores, o si no ponemos el punto también, el F también empieza a dar errores, ¿vale? La sintaxis hay que aprenderla. 668 00:44:10,639 --> 00:44:24,059 Entonces, tenemos aquí una variable que es vida 100, y esto significa que en este script ya podremos ir, en cualquier momento, ir diciendo que la vida, cuando arranca el juego, la vida del personaje es 100, ¿vale? 669 00:44:24,059 --> 00:44:46,460 Y veis que yo tengo esta vida y es verdad que cuando declaramos una variable, que es darle una forma a la caja y un nombre, ¿vale? También la inicializamos o podemos decir, ¿vale? Que la vida, cuando arranque el juego dentro de esa caja al empezar, ¿vale? Tenga un 100, ¿no? Que esto lo vimos el otro día también. 670 00:44:46,460 --> 00:45:01,380 Ahora es verdad que hemos guardado este dato, pero como el dato está declarado aquí arriba, todos los cambios que vayamos haciendo se estarán guardando en la caja que está aquí arriba. 671 00:45:01,780 --> 00:45:10,519 ¿Eso qué significa? Que antes os he hablado de que existían bloques para ir declarando las variables, incluso usándolas. 672 00:45:10,519 --> 00:45:13,179 porque os he dicho también antes cuando hemos visto 673 00:45:13,179 --> 00:45:15,320 lo de la instancia que guardamos 674 00:45:15,320 --> 00:45:17,360 como variable, que se puede generar 675 00:45:17,360 --> 00:45:18,960 incluso una instancia dentro de 676 00:45:18,960 --> 00:45:20,559 un start, de un método 677 00:45:20,559 --> 00:45:23,260 de un momento de acción, yo puedo decir 678 00:45:23,260 --> 00:45:25,400 vale, esta variable vida se genera 679 00:45:25,400 --> 00:45:26,519 aquí con un valor de 100 680 00:45:26,519 --> 00:45:29,019 y luego decir vale 681 00:45:29,019 --> 00:45:30,980 y en el update que vida 682 00:45:30,980 --> 00:45:33,019 pase a llamarse, pase a valer 683 00:45:33,019 --> 00:45:34,800 500, porque 684 00:45:34,800 --> 00:45:37,159 cuando el primer frame queremos que sea 100 685 00:45:37,159 --> 00:45:39,059 pero ya los siguientes 500, veis que 686 00:45:39,059 --> 00:45:46,460 aquí vida da un fallo vale y esto es simple ya alguien me sabría decir el porqué a ver si eso 687 00:45:46,460 --> 00:45:52,860 más o menos vamos se explica en el tema 0 pero oye vale os he dicho antes que existía este 688 00:45:52,860 --> 00:45:59,079 encapsulamiento que servía para ir digamos generando bloques fijaos que cuando yo genero 689 00:45:59,079 --> 00:46:04,559 la caja barra la variable le pongo el tipo de variable que es y yo he generado esta caja aquí 690 00:46:04,559 --> 00:46:12,380 en el start. Y esto es un bloque, ¿vale? A diferencia de cuando lo generamos en la clase, que veis que comprende todo, aquí solo comprende esto. 691 00:46:12,900 --> 00:46:22,039 Por tanto, cuando llamamos a esta variable en otro punto que no es de su bloque, pues no existe, ¿vale? Aquí podríamos incluso generar otra variable 692 00:46:22,039 --> 00:46:30,380 llamada vida, que es una vida diferente a esta. Son dos variables distintas, ¿vale? Esto no es lo mismo que lo que habíamos hecho antes de decir, 693 00:46:30,380 --> 00:46:48,079 Yo genero, declaro esta variable aquí arriba y ahora existe esta caja preparada en todo este ámbito. Y aquí es donde digo, vida 100. Y aquí el 100 se está guardando aquí arriba. Es decir, este 100 se está guardando en todo este tránsito. 694 00:46:48,079 --> 00:47:07,340 Si yo aquí, por ejemplo, dijera, voy a enseñar por consola, esto ya lo vimos el otro día, que es el debug log, voy a querer que me vaya en cada fotograma enseñando lo que vale vida. Y veis que no me da ningún fallo. Me está enseñando vida, que está aquí creada la caja y la he cargado con un valor aquí. 695 00:47:07,340 --> 00:47:21,619 Es verdad que este ámbito donde he dicho que vale 100, y vais a ver que lo que me va a mostrar es 100, que este valor de 100 lo he generado aquí y este 100 ya está fuera del bloque. 696 00:47:21,739 --> 00:47:30,800 Pero es que la caja donde está guardando los valores sí está fuera y sí que está en la cápsula, digamos, en el bloque, que luego permite que se comunique con una inferior, que es el update. 697 00:47:30,800 --> 00:47:52,909 Si yo ahora ejecuto esta instrucción, lo primero es que probablemente desfalle o pase algo raro. Yo voy a la consola y no veo ni 100, ni 0, ni nada. ¿Por qué? A ver quién me lo sabe responder. Esto si habéis hecho la tarea 1 deberíais saberlo. 698 00:47:52,909 --> 00:47:54,989 No has asignado el código, ¿no? 699 00:47:55,710 --> 00:47:56,150 Efectivamente. 700 00:47:56,550 --> 00:47:58,750 No hay ningún objeto dentro del juego, 701 00:47:59,030 --> 00:48:01,289 ni le hemos dicho de otra forma que se ejecute, 702 00:48:02,110 --> 00:48:03,809 no hay ningún objeto en el juego que tenga este script. 703 00:48:03,909 --> 00:48:06,030 Por tanto, el script no se está ejecutando. 704 00:48:06,250 --> 00:48:08,489 Es decir, no hay ningún momento start de nada 705 00:48:08,489 --> 00:48:10,230 en donde se ejecute esto, ¿no? 706 00:48:10,769 --> 00:48:14,090 Entonces, pues en punto referencia, 707 00:48:14,150 --> 00:48:16,670 me da igual porque solo van a ser números, ¿vale? 708 00:48:16,670 --> 00:48:21,409 Voy a asignar este durante la tutoría como componente, ¿vale? 709 00:48:21,409 --> 00:48:36,650 A ver, he guardado, recordad que hay que guardar el script, ahí está, y ahora lanzo el juego. A ver, y ahora sí que cada fotograma está generando un 100. Aquí se van sumando hasta que llegue a 1000, que ya no sea más, pero aquí se van 100, 100, 100, 100. 710 00:48:36,650 --> 00:48:56,690 ¿Vale? Entendéis que al final lo que estamos consiguiendo es cambiar las variables en distintos puntos del código. Esto es importante entenderlo porque es lo que os he dicho antes. Si yo genero aquí la caja y aquí no existiera y guardo la caja aquí, al final vida no existe para el update porque está fuera del ámbito donde se ha generado esta caja. 711 00:48:56,690 --> 00:49:00,929 Esto también es por algo que se llama los ámbitos 712 00:49:00,929 --> 00:49:04,630 Que voy algunos pasos más adelante 713 00:49:04,630 --> 00:49:08,010 Dentro del tema cero, aquí se habla de los ámbitos de las variables 714 00:49:08,010 --> 00:49:13,329 Y habla un poquito de estos bloques y de estos ámbitos 715 00:49:13,329 --> 00:49:16,190 Y un poco también de lo que os estoy comentando aquí 716 00:49:16,190 --> 00:49:19,369 Igual este código es un poco más avanzado 717 00:49:19,369 --> 00:49:20,949 Por eso lo estoy simplificando 718 00:49:20,949 --> 00:49:25,010 Pero básicamente de lo que habla es que están las variables globales 719 00:49:25,010 --> 00:49:27,250 que se declaran al comienzo y están disponibles en todo el script, 720 00:49:27,670 --> 00:49:31,650 incluso dentro de las funciones, como sería el start y el update y aquí saludar. 721 00:49:32,369 --> 00:49:36,170 Y luego las locales, que se declaran dentro de una función. 722 00:49:36,170 --> 00:49:38,949 Y por eso solo están disponibles dentro de ella. 723 00:49:39,610 --> 00:49:45,210 Por tanto, cuando más adelante hablemos, aquí he declarado una variable local, 724 00:49:45,769 --> 00:49:49,510 porque está en un bloque muy concreto, una función, 725 00:49:49,989 --> 00:49:54,949 y aquí las que se generan dentro de la clase son las variables que se llaman global. 726 00:49:55,010 --> 00:50:22,690 ¿Vale? Es verdad que el otro día ya os dejé caer también que cuando, y voy a quitar esta variable global y vuelve a dar este fallo, ¿no? Os dije que por defecto si una variable, y bueno vuelvo al de instanciar, si una variable le ponemos serialize fill es cuando conseguimos que podamos referenciar o capturar cosas desde el inspector, ¿no? Que es lo que hemos hecho con el prefab que hemos arrastrado, ¿vale? 727 00:50:22,690 --> 00:50:40,679 Y también os dije otra forma de hacerlo, que era poniendo delante la palabra public, pública, ¿vale? Vais a ver que yo cuando ponga public aquí, a ver si quiere, a ver, public, uy, va, espera, que algo he hecho y he abierto. 728 00:50:40,679 --> 00:51:06,489 A ver qué está pasando... Vale, cuando también tengamos... No, está bien. A ver, un segundo. Vale. Cuando tengamos variables públicas, aunque ahora me esté dando fallo, ya veremos que esto no sucede cuando lo hagamos en otros momentos. 729 00:51:06,489 --> 00:51:25,710 Voy a volver a declararla como variable global. Cuando es pública, significa que va a trascender su propia cápsula e incluso en otros scripts distintos, en otras clases que tengamos, podremos acceder a esta variable. 730 00:51:25,710 --> 00:51:44,250 Esto es más avanzado, pero me sirve para entender que por defecto, si no pone nada aquí, como hemos tenido hasta ahora, como me ha dicho Elisa, las variables son privadas. Es lo mismo poner esto de private que no poner nada, porque se entiende que una variable que no declaramos su ámbito es privada. 731 00:51:44,250 --> 00:51:54,309 Cuando es privada es cuando ocurre esto que os estoy diciendo de que se encierra en su cápsula y solo se puede referenciar a esta variable en su bloque. 732 00:51:54,969 --> 00:52:04,550 Cuando la ponemos en pública, además Unity tiene la... aparte de permitir que en otros scripts podamos acceder, 733 00:52:04,550 --> 00:52:17,690 Si yo ahora mismo, por ejemplo, pusiera... Bueno, es que es un poco avanzado esto, ya lo veremos. Si pusiera un acceso a esta clase, podría acceder a variable con decimales desde otro punto, desde otro código. 734 00:52:18,469 --> 00:52:30,869 Pero aparte tiene la capacidad de que cuando guardamos y volvemos a Unity, vais a ver que ahora existe esa variable igual que con el serializeField, que lo podemos aquí modificar. 735 00:52:30,869 --> 00:52:54,059 Venía por defecto el 5.5 que está declarado aquí, pero aquí lo podemos modificar, si os fijáis. Está preparada. Esto significa que no es lo mismo, para que veáis y leéis una cosa, que no es lo mismo poner serialize fill de tipo in, lo que sea, y variable serializada. 736 00:52:54,059 --> 00:52:56,239 también me sirve para que veáis 737 00:52:56,239 --> 00:52:57,800 como voy escribiendo las variables 738 00:52:57,800 --> 00:52:59,260 es algo muy importante 739 00:52:59,260 --> 00:53:01,380 y le asigno y le pongo un 740 00:53:01,380 --> 00:53:03,960 5.8f 741 00:53:03,960 --> 00:53:05,559 porque es un float 742 00:53:05,559 --> 00:53:08,019 ¿vale? vais a ver que yo cuando 743 00:53:08,019 --> 00:53:09,820 bueno, ¿por qué da fallo? 744 00:53:10,099 --> 00:53:12,119 porque he intentado guardar una variable float 745 00:53:12,119 --> 00:53:13,840 en un int ¿vale? entonces 746 00:53:13,840 --> 00:53:16,019 es importante los tipos 747 00:53:16,019 --> 00:53:17,699 de variables como los vamos gestionando 748 00:53:17,699 --> 00:53:19,760 cuando ahora vaya 749 00:53:19,760 --> 00:53:21,059 al 750 00:53:21,059 --> 00:53:23,780 al script tengo las dos variables 751 00:53:23,780 --> 00:53:33,760 Veis que aquí en apariencia hacen lo mismo, pero si aterrizamos aquí, vemos que una es pública y eso será accesible desde otras clases. 752 00:53:34,320 --> 00:53:44,780 De hecho, veis que la clase ya por defecto no la declara pública también, para que podamos comunicarnos con esta clase en otros puntos del juego, con esta script en otros puntos del juego, en otros códigos. 753 00:53:44,780 --> 00:54:06,039 Pero esta, realmente, al no poner nada del ámbito, en realidad privada, no podremos acceder a esta variable desde otros puntos del script. De los scripts. De este sí, porque está dentro de su ámbito, pero no podremos ir a otros códigos que se llamen tal cual. De hecho, lo voy a hacer muy rápido, aunque no entendamos tampoco. 754 00:54:06,039 --> 00:54:10,760 Tengo el script durante la tutoría y el script Instanced Prefab que he preparado antes. 755 00:54:11,260 --> 00:54:17,440 Imaginaos que yo quiero cambiar desde Instanced Prefab la variable con decimales. 756 00:54:18,159 --> 00:54:23,679 Lo primero que habrá que hacer, igual que hemos hecho aquí, es decir, durante la tutoría, 757 00:54:23,980 --> 00:54:29,380 y veis que ahora voy a generar una variable que se llama igual que otro script. 758 00:54:29,380 --> 00:54:35,840 Y es que recordad, al final las clases, como os he dicho aquí, se corresponden con el nombre de los componentes. 759 00:54:36,039 --> 00:54:44,320 Y cuando arrastramos un script como componente, al final, igual que existe transform, pues existe el componente durante la tutoría. 760 00:54:44,659 --> 00:54:46,760 Es una caja que podemos crear, ¿no? 761 00:54:47,099 --> 00:54:51,380 Entonces, por eso existe aquí una caja, y no da ningún fallo, que se llama durante la tutoría. 762 00:54:51,380 --> 00:54:57,380 Y aquí lo puedo llamar como otro, en minúscula, porque es una variable, ¿vale? 763 00:54:57,380 --> 00:54:58,000 Otro script. 764 00:54:59,000 --> 00:54:59,980 Y aquí está preparado. 765 00:54:59,980 --> 00:55:06,239 Y yo en el transform puedo decirle, oye, quiero que otro script acceder a sus propiedades. 766 00:55:06,840 --> 00:55:10,500 Y vais a ver que yo, a medida que me vaya metiendo en sus propiedades con el punto, 767 00:55:11,019 --> 00:55:16,480 como estoy apelando aquí, hay una variable suya de durante la tutoría que se llama variable con decimales. 768 00:55:17,099 --> 00:55:23,280 Pues vais a ver que, cuando yo doy ya el punto, aquí existe una variable llamada variable con decimales. 769 00:55:24,219 --> 00:55:28,019 Y yo puedo decir, oye, pues esto quiero que valga 10. 770 00:55:28,019 --> 00:55:49,159 Y aquí está cambiando el valor. Si yo guardo esto, desde otro código estoy cambiando el valor de este 5,5. Y de hecho vais a ver cuando empiece el juego que variable con decimales, que por defecto debería ser 5,5, ahora como lo he cambiado, pues está cambiado. 771 00:55:49,159 --> 00:56:16,940 Ahora os explico otra cosa. Como lo he cambiado en el componente, pues se ha quedado con otro comportamiento. Pero yo cuando arranco el juego y pasa por ese start, vais a ver que vale. A ver, hazme caso. Claro, lo he cambiado aquí. Un segundito. Variable con decimales durante la tutoría. Instanced prefab. Y no se está ejecutando porque nuevamente este instanced prefab ahora no está en ninguno de los objetos. 772 00:56:16,940 --> 00:56:42,340 Ah, pues sí, sí que está. A ver, está en script retainer. Entonces, bueno, vamos a hacer otra cosa porque no lo está cambiando en el editor, pero sí que lo está cambiando realmente. Si aquí decimos en el update, borro esto, que en vez de enseñarme la vida me enseña lo que vale variable con decimales, ¿vale? Vais a ver que lo que pone cada fotograma es 10 y no el 5,5 que está ahí. 773 00:56:42,340 --> 00:56:45,880 entonces, vuelvo a ejecutar 774 00:56:45,880 --> 00:56:49,429 me está enseñando 5.5 775 00:56:49,429 --> 00:56:50,789 pero bueno, esto que está haciendo 776 00:56:50,789 --> 00:56:51,969 a ver un segundito 777 00:56:51,969 --> 00:56:55,630 5.5, bla bla bla, me enseña esto 778 00:56:55,630 --> 00:56:56,510 bien 779 00:56:56,510 --> 00:57:01,280 pues 780 00:57:01,280 --> 00:57:10,059 vale 781 00:57:10,059 --> 00:57:21,190 un segundo, solo por probar si es esto 782 00:57:21,190 --> 00:57:22,250 hasta luego Jesús 783 00:57:22,250 --> 00:57:26,280 a ver, vale 784 00:57:26,280 --> 00:57:28,239 hay otro problema 785 00:57:28,239 --> 00:57:30,280 ¿vale? que es por lo que se usa 786 00:57:30,280 --> 00:57:31,920 el serialize fill en ocasiones 787 00:57:31,920 --> 00:57:41,500 Que es que cuando tenemos aquí un script que vamos cambiando el valor, lo que vamos escribiendo aquí se sobreimpone a todo lo que vayamos cambiando. 788 00:57:41,599 --> 00:57:48,639 Entonces, si aquí dejamos un valor ya puesto, que es diferente al que venía por defecto, se sobreescribe ese. 789 00:57:49,199 --> 00:57:53,320 De hecho, veis que yo aquí pongo 33,2 y el que sale es 33,2. 790 00:57:53,320 --> 00:58:16,409 En ese caso, habrá que ir operando de distinto modo, porque como está haciendo público, lo está variando aquí. Pero bueno, no debería... Perdona, porque esto en realidad lo estoy haciendo, pero porque veáis una cosa que no es ni siquiera esto. 791 00:58:16,409 --> 00:58:19,110 a ver, espera un segundo, que ya es por saber 792 00:58:19,110 --> 00:58:20,070 que estoy haciendo yo 793 00:58:20,070 --> 00:58:22,909 y va a poner 33.2 794 00:58:22,909 --> 00:58:25,110 porque es el que está sobre escribiendo 795 00:58:25,110 --> 00:58:27,269 vale, este es el 796 00:58:27,269 --> 00:58:29,250 típico problema que pasa cuando tenemos 797 00:58:29,250 --> 00:58:29,889 un public 798 00:58:29,889 --> 00:58:33,090 y al final lo que estamos haciendo 799 00:58:33,090 --> 00:58:34,869 es cambiar el valor, igual que hemos hecho 800 00:58:34,869 --> 00:58:36,909 con los valores 801 00:58:36,909 --> 00:58:38,650 de estos puntos 802 00:58:38,650 --> 00:58:41,309 lo estamos cambiando en el 803 00:58:41,309 --> 00:58:42,849 editor, que es que básicamente 804 00:58:42,849 --> 00:58:45,369 en el editor estamos marcando que tiene que hacer 805 00:58:45,369 --> 00:59:12,949 Unity y está sobreponiéndose a lo que hace el código. Lo que me importa de todo esto es simplemente que veáis, ¿vale? Esto suele tener otro uso, pero lo que me interesa es que veáis que variable serializada, como es private, si yo voy aquí durante la tutoría e intento acceder a, ¿cómo se llamaba? Igual que he podido acceder a variable con decimales, a variable serializada, otro script, ¿vale? No va a aparecer. 806 00:59:12,949 --> 00:59:29,829 Es decir, no va a aparecer variable serializada e incluso aunque yo me ponga a intentar escribir que valga 20, yo que sé, me da fallo. ¿Por qué? Simplemente... Ah, y bueno, ya sé por qué no se está ejecutando, no estaba guardando creo. Vale, lo escribo bien. 807 00:59:29,829 --> 00:59:32,250 durante la tutoría 808 00:59:32,250 --> 00:59:35,329 yo aunque tengo esta variable aquí serializada 809 00:59:35,329 --> 00:59:36,710 ¿vale? no me la coge 810 00:59:36,710 --> 00:59:38,510 ¿por qué? porque es privada 811 00:59:38,510 --> 00:59:39,929 hasta que yo no la haga pública 812 00:59:39,929 --> 00:59:43,050 yo no voy a poder acceder 813 00:59:43,050 --> 00:59:44,809 veis que ahora ya ha dejado de tener error 814 00:59:44,809 --> 00:59:46,409 esto simplemente me sirve 815 00:59:46,409 --> 00:59:48,909 lo mismo, todavía no sabemos aplicarlo 816 00:59:48,909 --> 00:59:50,349 me sirve para que veáis que las variables 817 00:59:50,349 --> 00:59:52,969 en ocasiones no se podrá acceder a ellas 818 00:59:52,969 --> 00:59:55,230 o no se podrá ver en el editor 819 00:59:55,230 --> 00:59:55,750 porque 820 00:59:55,750 --> 00:59:58,829 no tienen el ámbito 821 00:59:58,829 --> 01:00:02,469 el acceso al ámbito correcto, ¿vale? 822 01:00:03,409 --> 01:00:07,269 Me estoy enrevesando mucho quizá con ciertas cosas 823 01:00:07,269 --> 01:00:09,349 y vamos a volver a donde nos hemos quedado, 824 01:00:09,449 --> 01:00:12,409 pero lo que me importa es que ya sabemos que cada bloque, 825 01:00:12,710 --> 01:00:12,989 ¿veis? 826 01:00:13,670 --> 01:00:17,369 Irá dando fallo o no según el ámbito que tenga, 827 01:00:17,590 --> 01:00:19,289 en dónde se declara esta caja, 828 01:00:19,389 --> 01:00:21,289 que no es lo mismo declararla aquí al comienzo de la clase 829 01:00:21,289 --> 01:00:23,550 que dentro del start, por ejemplo, ¿vale? 830 01:00:24,170 --> 01:00:26,409 Luego, tenemos aquí un int 831 01:00:26,409 --> 01:00:36,849 y hago aquí un float que es vida y power up, yo que sé, 832 01:00:37,010 --> 01:00:40,570 que es como los puntos que va a dar a la vida el power up cuando lo recojamos. 833 01:00:40,650 --> 01:00:42,570 Le voy a poner que 50, recupera media vida. 834 01:00:43,710 --> 01:00:47,750 Lo suyo sería que si hubiera más de 100, pues el power up no te permitirá tener más de 100, 835 01:00:47,809 --> 01:00:49,050 pero vamos a obviar eso de momento. 836 01:00:49,050 --> 01:00:56,150 Lo que podemos hacer, el otro día dijimos, es que podemos hacer operaciones de vida más power up 837 01:00:56,150 --> 01:01:03,050 y que esto signifique algo, pero lo mismo, hasta que no lo metemos dentro de un contexto, de una caja, 838 01:01:03,650 --> 01:01:11,750 no va a dar ningún resultado. Voy a poner vida actual, que va a ser igual a la vida más power up. 839 01:01:12,130 --> 01:01:19,309 Y esto da un problema ahora mismo. He generado dentro de start, porque digamos que solo lo voy a ejecutar en el start, 840 01:01:20,170 --> 01:01:26,070 una variable llamada vida actual que me da error. ¿Y por qué pensáis que puede ser? 841 01:01:26,150 --> 01:01:28,570 A ver si... Así rápido. Igual no caéis. 842 01:01:28,690 --> 01:01:29,969 ¿Pero por qué podría ser? ¿Qué error? 843 01:01:30,309 --> 01:01:32,150 Porque realmente está bien configurado. 844 01:01:32,250 --> 01:01:33,909 Hemos hecho las cajas, le hemos dado unos valores 845 01:01:33,909 --> 01:01:39,550 y estamos guardando dentro de otra caja tipo int estos dos valores, 846 01:01:39,849 --> 01:01:41,789 que el otro día ya vimos que se podía operar de este modo. 847 01:01:42,469 --> 01:01:43,590 ¿Por qué pensáis que da fallo? 848 01:01:44,590 --> 01:01:48,210 A ver si lo podéis... 849 01:01:48,210 --> 01:01:49,550 Simplemente también para que lo veáis. 850 01:01:49,550 --> 01:01:57,090 Los tipos de cajas, cuando sumamos 100 más 50 da 150 y es un entero, ¿no? 851 01:01:57,090 --> 01:02:12,570 Pero es verdad que aunque sea un entero, esto lo hemos generado como un float, es decir, está esperando decimales y una vez tenemos decimales en una operación, como sucede en PowerApp, ya no podemos meterlo en un float, en un int, perdón, hay que meterlo en un float. 852 01:02:12,570 --> 01:02:32,769 ¿Por qué? Porque será susceptible a meter decimales. Porque pensad que si yo hubiera puesto esto, ¿vale? ¿Qué podría ser? Aquí el int jamás va a saber qué meter en esta caja porque se sale de su rango. ¿Vale? Vais a ver que si yo pongo float, el fallo deja de suceder. ¿Vale? Importante. Hay, digamos, tipos de variables más restrictivas que otras. 853 01:02:32,769 --> 01:02:42,809 Y esto, por lógica, en el caso de los números, por ejemplo, es el que más flexibilidad va a tener, pues es el que permite tanto tener números enteros como decimales. 854 01:02:43,090 --> 01:02:45,630 Pero veis que el int no lo permite. 855 01:02:46,269 --> 01:02:56,050 Hay formas de resolver esto, como hacer conversiones, pero bueno, esto sí que es más avanzado, lo usaremos más adelante, como es transformar un objeto en otro tipo de variable. 856 01:02:56,050 --> 01:03:09,050 Con esto, poniendo entre paréntesis el tipo de variable al que queremos convertir otra, hemos dicho que el 50.5, bueno, pues que como vamos a operar y nos interesa por lo que sea que sea un int, pues que lo convierta en un int redondeando. 857 01:03:09,730 --> 01:03:18,349 Siempre redondea la baja en este caso, pero estamos haciendo lo que se llama una conversión explícita. Estamos diciéndole cómo convertirlo. 858 01:03:18,349 --> 01:03:20,670 Simplemente lo que me sirve es que veáis 859 01:03:20,670 --> 01:03:22,670 Que a veces os pueden dar fallos que decís 860 01:03:22,670 --> 01:03:23,690 ¿De dónde me viene esto? 861 01:03:23,949 --> 01:03:25,570 Y es simplemente por el tipo de caja 862 01:03:25,570 --> 01:03:27,030 Porque es más restrictiva del otro 863 01:03:27,030 --> 01:03:30,489 Facilidad para saber identificar eso 864 01:03:30,489 --> 01:03:32,769 Si os ponéis encima de un fallo y lo dejáis quieto 865 01:03:32,769 --> 01:03:35,190 Os va a poner en la segunda línea 866 01:03:35,190 --> 01:03:35,710 En este caso 867 01:03:35,710 --> 01:03:38,989 No se puede convertir implícitamente el tipo float en int 868 01:03:38,989 --> 01:03:41,070 Ya existe conversión explícita 869 01:03:41,070 --> 01:03:42,269 Compruebe si le falta una conversión 870 01:03:42,269 --> 01:03:43,849 Básicamente aquí lo que está diciendo es 871 01:03:43,849 --> 01:03:46,969 Que no se puede convertir si no lo hacemos de manera explícita 872 01:03:46,969 --> 01:03:51,949 a nosotros, como he hecho antes con una orden que se puede ejecutar, no se puede convertir 873 01:03:51,949 --> 01:03:57,449 un float en int porque es que no cabe en esa caja, ¿vale? Importante. Importante también 874 01:03:57,449 --> 01:04:02,929 eso, que el tipo de variable puede determinar qué puede haber dentro. Luego, el otro día 875 01:04:02,929 --> 01:04:08,190 vimos también que había otro tipo, entiendo que entre, con todos estos problemas que pueden 876 01:04:08,190 --> 01:04:11,929 ir surgiendo, lo que es un int y es un float, ¿no? Y cómo se escribe un float para que 877 01:04:11,929 --> 01:04:21,960 no de error hasta aquí entiendo que bien y bueno así de fácil si yo ahora quisiera ver este valor 878 01:04:21,960 --> 01:04:30,239 en la consola como que lo está recibiendo lo está ejecutando si veo vida actual y guardo 879 01:04:30,239 --> 01:04:45,050 pues ahora al empezar el juego vamos a ver qué valor 150 con 5 perfecto a ver que algo hay por 880 01:04:45,050 --> 01:04:53,150 aquí que a ver lo mismo puede ser varias cosas algo de lo que toca por ahí con decimales 881 01:04:55,250 --> 01:05:04,409 con decimales eso es que bueno os acordáis que yo había puesto varias esto es básicamente fijaos la 882 01:05:04,409 --> 01:05:10,050 que salía aquí vale nuevamente por lo de los hacerlo público no y operar mal yo borra las 883 01:05:10,050 --> 01:05:14,489 variables que eran públicas para acceder desde aquí no y ahora vale dice 884 01:05:14,489 --> 01:05:17,869 durante la tutoría otro script pero ahora ya no existen estas variables el 885 01:05:17,869 --> 01:05:21,929 error aunque ha sido que hemos borrado aquí cosas está afectando a estas 886 01:05:21,929 --> 01:05:25,409 variables que ahora no sabe dónde existen vale como no las queremos lo voy 887 01:05:25,409 --> 01:05:29,849 a borrar pero ver que cuando comunicamos scripts entre sí al igualdo pueden 888 01:05:29,849 --> 01:05:33,230 venir los errores porque estamos hablando entre unos y otros y esto sirve 889 01:05:33,230 --> 01:05:37,349 también para hablar del ámbito que estamos hablando de que salga del bloque 890 01:05:37,349 --> 01:05:55,030 Porque cuando empezamos a hacer códigos muy grandes, si empezamos a hacer todo público, que se puede hacer de un lado a otro, que suele parecer muy conveniente, muy cómodo al principio, como estamos comunicando distintos scripts, surgen este tipo de problemas, que es que, vale, estamos cambiando aquí un script, pero también estamos afectando a otros scripts. 891 01:05:55,030 --> 01:06:12,489 Entonces, si no tenemos un control claro de qué está afectando a qué, o no lo restringimos con cosas privadas o lo redirigimos de otras formas, que ya iremos viendo también, pues al final lo que sucede es que empiezan a surgir estos fallos y ahora es bastante pequeño el código, pero nos puede volver un poco la cabeza del revés. 892 01:06:12,489 --> 01:06:20,369 Bueno, y va a dar 15,5 si no me equivoco, ¿no? 150,5, perdón, pues ahí está, 150,5 con su decimal, ¿vale? 893 01:06:22,630 --> 01:06:28,989 Imaginaos que yo quiero hacer una variable que se va a llamar nombre, ¿vale? Y esto es de repaso del otro día, voy a pasar rápida. 894 01:06:29,750 --> 01:06:38,809 Y yo quiero que ponga mi nombre, que ponga Daniel, ¿vale? He creado aquí una variable y como genero una variable que ponga Daniel, ¿qué tendría que poner? 895 01:06:38,809 --> 01:06:57,739 ¿De qué tipo tiene que ser? Una variable de texto. Esto lo vimos el otro día. A ver, vuelvo a la unidad 0, que la tengo por aquí. Aquí, ¿vale? En las variables, pues ponemos las numéricas, int y float, y luego lar de tipo string, ¿no? 896 01:06:57,739 --> 01:07:17,400 Que además pone, podemos usar, su valor se introduce delimitado por comillas, ¿vale? Vale, sí, bueno, esto es otra cosa. Va delimitado por comillas, ¿no? Si os acordáis, existe otro tipo de variable que se llama string, en donde puedo llamarlo nombre, ¿vale? 897 01:07:17,400 --> 01:07:19,679 dado que así es como se va a llamar 898 01:07:19,679 --> 01:07:21,400 aquí abajo cuando la mentemos 899 01:07:21,400 --> 01:07:23,539 y esto va a significar que se llama 900 01:07:23,539 --> 01:07:25,559 que yo quiero que aquí se guarde 901 01:07:25,559 --> 01:07:27,539 el valor Daniel, entre comillas 902 01:07:27,539 --> 01:07:29,480 ¿vale? ahora yo cuando lance 903 01:07:29,480 --> 01:07:31,440 el juego, esto lo vimos el otro día, no sé 904 01:07:31,440 --> 01:07:32,900 si tenemos dudas de esto 905 01:07:32,900 --> 01:07:35,320 es muy importante que 906 01:07:35,320 --> 01:07:37,039 entendamos bien cómo funcionan las variables 907 01:07:37,039 --> 01:07:38,480 aquí tenemos a Daniel 908 01:07:38,480 --> 01:07:41,219 ¿vale? que esto nuevamente 909 01:07:41,219 --> 01:07:43,179 yo puedo declarar aquí 910 01:07:43,179 --> 01:07:45,320 la variable y aquí 911 01:07:45,320 --> 01:07:47,159 como está dentro del ámbito 912 01:07:47,159 --> 01:07:49,239 en donde se ha declarado la variable 913 01:07:49,239 --> 01:07:51,239 pues aquí es donde puedo decirle, aquí quiero 914 01:07:51,239 --> 01:07:52,019 que se llame Daniel 915 01:07:52,019 --> 01:07:55,199 y ahora pues el resultado será 916 01:07:55,199 --> 01:07:56,920 el mismo, se verá Daniel 917 01:07:56,920 --> 01:07:57,639 ¿vale? 918 01:07:59,059 --> 01:08:01,000 si queremos por ejemplo 919 01:08:01,000 --> 01:08:03,099 que en cierto momento del juego, cuando 920 01:08:03,099 --> 01:08:05,400 vayamos metiendo datos en un menú 921 01:08:05,400 --> 01:08:07,159 pues por ejemplo podamos meter 922 01:08:07,159 --> 01:08:09,119 nuestra edad, la edad importante 923 01:08:09,119 --> 01:08:11,280 pues siempre va a ser un entero 924 01:08:11,280 --> 01:08:12,739 ¿no? pues no ponemos decimales 925 01:08:12,739 --> 01:08:15,360 25, este es el mismo ejemplo del otro día, lo doy 926 01:08:15,360 --> 01:08:20,579 rápido recordad que como hemos visto antes dependiendo del tipo de variable 927 01:08:20,579 --> 01:08:26,960 pues aquí se va a lanzar de una forma u otra eso que significa que si yo pongo 928 01:08:26,960 --> 01:08:32,880 el nombre más recordad que esto es la concatenación de textos esto también 929 01:08:32,880 --> 01:08:37,380 viene aquí explicado cuando vamos hilando strings con 930 01:08:37,380 --> 01:08:42,680 números vale lo que va haciendo es concatenar ese texto es decir que no es 931 01:08:42,680 --> 01:08:45,680 una soma como tal igual que el igual no es igual y sirve para asignar una 932 01:08:45,680 --> 01:08:53,060 variable vale cuando hacemos nombre más edad vale que aquí no da ningún fallo al 933 01:08:53,060 --> 01:08:58,619 final lo que está haciendo es poner un string daniel y luego un número vale 934 01:08:58,619 --> 01:09:01,399 pero un número que en realidad no es un texto lo que pasa es que hay que 935 01:09:01,399 --> 01:09:06,560 entender que cuando en una concatenación de elementos con este más cuando unimos 936 01:09:06,560 --> 01:09:10,359 varios elementos unos de tipo texto el resto también se convierte en uno de 937 01:09:10,359 --> 01:09:12,300 tipo texto, ¿vale? Pasan a ser 938 01:09:12,300 --> 01:09:14,380 todo de tipo texto, igual que hemos hecho antes 939 01:09:14,380 --> 01:09:16,239 con lo de convertir 940 01:09:16,239 --> 01:09:18,479 el float en in, ¿vale? Daniel 25 941 01:09:18,479 --> 01:09:20,260 no pone ningún espacio porque si 942 01:09:20,260 --> 01:09:21,739 recordáis, también aquí dentro 943 01:09:21,739 --> 01:09:24,260 podemos empezar con las comillas y las 944 01:09:24,260 --> 01:09:25,819 comillas sirven siempre 945 01:09:25,819 --> 01:09:28,140 para ir escribiendo nosotros 946 01:09:28,140 --> 01:09:30,279 textos literales, no son cantidades que 947 01:09:30,279 --> 01:09:32,180 se suman ni que se van a operar, son textos 948 01:09:32,180 --> 01:09:33,899 literales, ahí pone la edad 949 01:09:33,899 --> 01:09:36,180 de espacio, ¿vale? Porque 950 01:09:36,180 --> 01:09:38,420 los espacios también son literales, concatenamos 951 01:09:38,420 --> 01:09:39,840 Daniel, ¿no? 952 01:09:40,359 --> 01:09:50,630 Y ahora concatenamos, es de 25, en este caso, años. 953 01:09:51,869 --> 01:10:01,930 Esto cuando hagamos una UI para ir metiendo nuestro nombre al jugar, etc., es vital que vayamos conociendo cómo se declaran. 954 01:10:02,090 --> 01:10:07,869 Yo ahora lo que voy a ver es la edad de, aquí hemos dejado una especie de variable que yo podría ir cambiando el valor, 955 01:10:07,869 --> 01:10:13,270 incluso se puede ir cambiando durante el juego, o guardará el valor que introduzcamos nosotros en un menú, 956 01:10:13,369 --> 01:10:20,529 en plan, ponerá nombre y ponemos Jesús, pues se guarda Jesús en esta caja y aquí sabe perfectamente 957 01:10:20,529 --> 01:10:25,229 que lo que esté guardado en esta caja, que en ese caso será Jesús, y la edad pues la metemos también 958 01:10:25,229 --> 01:10:31,850 y podrá ser 35, pues en ese momento cambiará para mostrar otro mensaje en otro punto del juego. 959 01:10:31,850 --> 01:10:37,010 y la edad de Daniel es de 35 años. 960 01:10:37,010 --> 01:10:40,109 Fijaos que aquí falta un espacio, básicamente porque 961 01:10:40,109 --> 01:10:45,050 deberíamos decir que literalmente aquí haya un espacio 962 01:10:45,050 --> 01:10:46,510 para que lo respete. 963 01:10:46,949 --> 01:10:49,609 De hecho, es el mismo ejemplo de la semana pasada. 964 01:10:50,010 --> 01:10:52,409 Hasta aquí más o menos vais pillando cómo funcionan los strings. 965 01:10:53,350 --> 01:10:56,909 Quedarse con que se escriben con estas comillas 966 01:10:56,909 --> 01:11:01,689 y es importante que lo interpreta como una cadena de textos literal. 967 01:11:02,850 --> 01:11:08,510 Luego, por otro lado, existe un nuevo tipo de caja que el otro día no hablamos, que son las booleanas. 968 01:11:09,109 --> 01:11:13,270 Y una booleana solo puede guardar dos valores, verdadero y falso. 969 01:11:14,289 --> 01:11:20,590 Una booleana, cuando generamos una variable, será de tipo bool en este caso, para decir que es una booleana. 970 01:11:20,590 --> 01:11:42,270 Y aquí voy a poner semáforo encendido, ¿vale? Y voy a decir por defecto que sea true o false, ¿vale? Tiene dos variables, es decir, que estas booleanas, las booleanas, se escribe así, pueden ser true o false, ¿vale? 971 01:11:42,270 --> 01:11:48,550 Igualmente que siempre, cuando sabemos que algo es booleano, si yo pongo un 5, no es la caja que corresponde y da fallo. 972 01:11:48,689 --> 01:11:58,430 Si yo hasta ahora pongo José, ¿vale? Entre comillas, como haría un string, da fallo, porque en esta caja booleana, llamada semáforo encendido, solo puede estar. 973 01:11:58,909 --> 01:12:05,649 O lo que suele significar true, que está encendido, ¿vale? Que es verdadero esto que ocurre o es falso, ¿vale? 974 01:12:05,649 --> 01:12:12,710 Lo mismo, esto en el tema, cuando hablamos de las variables, lo siguiente que pone aquí es booleanos. 975 01:12:12,850 --> 01:12:20,789 Pueden adoptar solo dos valores predefinidos, muy útiles para crear lo que se llaman interruptores o para indicar que algo está ocurriendo o no. 976 01:12:21,229 --> 01:12:27,850 Estas booleanas se usan mucho y por eso he puesto lo de semáforo, sirven para decir si algo está ocurriendo o no. 977 01:12:27,850 --> 01:12:39,210 Y cuando hagamos condicional es decir, como he dicho antes, si la vida del personaje ya es 100, no se le puede cargar el power up, porque está superando la cifra máxima que damos. 978 01:12:39,890 --> 01:12:50,350 A veces podemos decir, oye, mientras el personaje tenga, y voy a poner indicador, en vez de semáforo, indicador máximo, vida. 979 01:12:50,350 --> 01:12:52,449 ¿vale? si yo empiezo 980 01:12:52,449 --> 01:12:53,930 el juego con la vida llena 981 01:12:53,930 --> 01:12:55,569 pues aquí estará true 982 01:12:55,569 --> 01:12:58,489 y entonces mientras esto sea true, pues el power up 983 01:12:58,489 --> 01:13:00,390 no se va a poder coger, porque no nos 984 01:13:00,390 --> 01:13:02,409 interesa, ¿vale? ahora ya iremos 985 01:13:02,409 --> 01:13:04,310 viendo con las, y esto está aquí 986 01:13:04,310 --> 01:13:06,449 introducido, ¿vale? para que lo tengáis, con las estructuras 987 01:13:06,449 --> 01:13:08,569 de control, con los ifs principalmente 988 01:13:08,569 --> 01:13:10,270 pero hay más, ¿vale? iremos 989 01:13:10,270 --> 01:13:12,329 diciendo, dando condiciones para que una cosa 990 01:13:12,329 --> 01:13:14,409 se ocurra 991 01:13:14,409 --> 01:13:16,069 o no ocurra, ¿no? entonces 992 01:13:16,069 --> 01:13:18,510 en el momento que le demos un golpe 993 01:13:18,510 --> 01:13:24,590 a este y baje a 25, cuando pongamos una condición, va a decir, vale, pues como baja de 25 y está 994 01:13:24,590 --> 01:13:29,250 comprobando que ya no es 100, esto va a decir, pues ya no es, es falso, no está con el indicador 995 01:13:29,250 --> 01:13:33,170 al máximo de vida. Y entonces en ese caso sí que le permitirá que cuando cojamos un 996 01:13:33,170 --> 01:13:40,829 power up de suma de la vida para que pase de 25 hasta 75,5, ¿vale? Son como, ahí pone 997 01:13:40,829 --> 01:13:45,529 pues eso, conmutadores, interruptores, semáforos, ¿vale? Pues un semáforo puede estar encendido 998 01:13:45,529 --> 01:13:54,710 o apagado. Entonces las booleanas van a ser sobre todo muy útiles en el momento de ir 999 01:13:54,710 --> 01:14:00,689 planteando ejecuciones e ir viendo si ciertas condiciones se están cumpliendo o no. Ya 1000 01:14:00,689 --> 01:14:06,569 veremos ejemplos de esto. También importante, en un debug log, si decimos que enseñe lo 1001 01:14:06,569 --> 01:14:11,430 que guarda indicador máximo vida, vais a ver que lo que enseña, en este caso es falso, 1002 01:14:11,430 --> 01:14:13,829 pues cuando ejecute el juego 1003 01:14:13,829 --> 01:14:17,479 pues falso, ¿vale? 1004 01:14:17,779 --> 01:14:19,420 lo pone, no es una cadena de texto, es 1005 01:14:19,420 --> 01:14:22,100 que no, está cumpliendo la condición 1006 01:14:22,100 --> 01:14:23,739 de hecho internamente el código 1007 01:14:23,739 --> 01:14:25,340 lo que está leyendo es que este valor vale 1008 01:14:25,340 --> 01:14:27,760 o 0 o 1, es verdad que lo traduce en 1009 01:14:27,760 --> 01:14:29,880 falso o verdadero, pero falso es 0 1010 01:14:29,880 --> 01:14:30,979 y verdadero es 1 1011 01:14:30,979 --> 01:14:33,439 de hecho el otro día os dije que si 1012 01:14:33,439 --> 01:14:35,819 una caja, una variable 1013 01:14:35,819 --> 01:14:37,960 no se inicializaba 1014 01:14:37,960 --> 01:14:39,880 es decir, no se le daba un valor, por defecto 1015 01:14:39,880 --> 01:14:42,119 valía 0, o en el caso de los textos 1016 01:14:42,119 --> 01:14:50,079 vale nulo, no tiene contenido. Entonces, si yo ahora ejecuto este debug log, como no tiene 1017 01:14:50,079 --> 01:15:00,600 nada en su interior, lo que va a mostrar es falso. En realidad es un cero, pero digamos 1018 01:15:00,600 --> 01:15:05,239 que la condición es falsa, que no es lo mismo, simplemente por ver que existe también. Si 1019 01:15:05,239 --> 01:15:25,420 ponemos true, lo que va a enseñar es true. A ver, espera, ahí está, true. Al final 1020 01:15:25,420 --> 01:15:31,319 lo que queremos conseguir es, y voy a abrir el código, que lo tenéis también, y así lo podéis revisar más adelante, 1021 01:15:31,720 --> 01:15:41,079 pero lo pongo aquí, era conseguir que una nave espacial en la que van impactando meteoritos vaya quitándole escudo, 1022 01:15:41,239 --> 01:15:48,859 vida, por decirlo de otra forma, hasta que muere. Y este es el código, hay más formas de plantearlo, 1023 01:15:48,859 --> 01:15:51,260 pero es un código que resuelve el enunciado. 1024 01:15:52,140 --> 01:15:53,859 Tenemos esta clase que se llama diagrama, 1025 01:15:54,479 --> 01:15:58,159 como se podría llamar un juego nave, porque es descriptivo, 1026 01:15:59,100 --> 01:16:03,899 y al final lo que estamos haciendo es generar un float con la energía del escudo, 1027 01:16:04,220 --> 01:16:07,899 que empezará al máximo, ahora mismo vale cero, 1028 01:16:08,119 --> 01:16:09,720 porque no lo hemos declarado solo. 1029 01:16:10,640 --> 01:16:14,159 Un número de vidas, porque el juego, aparte de que muera la nave, 1030 01:16:14,380 --> 01:16:17,880 va a haber varias vidas, pierdes una vez y te resta una vida, 1031 01:16:17,880 --> 01:16:35,220 Es decir, va a haber la vida del 100 a 0, por ejemplo, y luego tres vidas. Luego, la fuerza del impacto que va a ir restando dos vidas cuando se choquen estos meteoritos. Luego va a haber un booleano, un interruptor, como estábamos diciendo, que nos va a decir si estamos vivos o no. 1032 01:16:35,220 --> 01:16:37,579 que este interruptor básicamente lo que va a hacer es 1033 01:16:37,579 --> 01:16:39,520 que mientras estamos vivos va a ser 1034 01:16:39,520 --> 01:16:41,279 true, porque sí, estamos vivos 1035 01:16:41,279 --> 01:16:42,920 pero cuando nos muramos 1036 01:16:42,920 --> 01:16:45,539 va a decir que es falso, que estamos 1037 01:16:45,539 --> 01:16:47,460 muertos básicamente, si lo traducimos 1038 01:16:47,460 --> 01:16:49,520 a nuestro lenguaje, y en el momento en el que 1039 01:16:49,520 --> 01:16:51,399 este interruptor pasa a ser falso, es decir 1040 01:16:51,399 --> 01:16:53,359 que estamos muertos, pues el juego 1041 01:16:53,359 --> 01:16:55,359 va a saber decir, va a entender ya el código 1042 01:16:55,359 --> 01:16:57,520 que, pues oye, que el juego se ha acabado 1043 01:16:57,520 --> 01:16:59,500 porque no estamos vivos, hemos perdido toda la 1044 01:16:59,500 --> 01:17:01,180 energía y también todas las vidas 1045 01:17:01,180 --> 01:17:03,579 y luego aquí pues bueno, hay un mensaje 1046 01:17:03,579 --> 01:17:07,520 que vamos a ir dando como avisos en pantalla. 1047 01:17:08,359 --> 01:17:12,300 Si os fijáis, ya para ir viendo una especie de ejecución 1048 01:17:12,300 --> 01:17:16,720 o de puesta en algo menos abstracto, 1049 01:17:17,260 --> 01:17:18,140 ¿qué es esto? 1050 01:17:18,239 --> 01:17:20,659 Cuando iniciamos el juego, cuando iniciamos el script, 1051 01:17:20,880 --> 01:17:22,239 lo que vamos a hacer es, en ese momento, 1052 01:17:22,359 --> 01:17:23,779 arranca el juego, arranca este script 1053 01:17:23,779 --> 01:17:27,239 y vamos a llenar las cajas que nos interesan en este momento 1054 01:17:27,239 --> 01:17:28,720 para darle un sentido también al juego. 1055 01:17:29,199 --> 01:17:32,399 Hasta este momento solo hemos generado espacios que rellenar. 1056 01:17:32,399 --> 01:17:52,520 Pero al empezar el juego nos decimos, oye, quiero que el escudo de la nave sea de 100. Y como se va a jugar con decimales, lo hemos planteado como un float. Esto hay que tenerlo en cuenta, como hemos visto después, para ir teniendo en cuenta problemas que puedan surgir. 1057 01:17:52,520 --> 01:17:59,199 que suelen ser fáciles de corregir, pero oye, que nos pueden traer de cabeza, pues tiende vida, ¿vale? 1058 01:17:59,199 --> 01:18:04,140 Y aunque no ponga decimales, como es un decimal, es decir, es un float, mejor dicho, ya pongo la F, ¿vale? 1059 01:18:04,399 --> 01:18:12,899 Si no la pongo, puede no dar problema, pero veis que ser correcto tampoco conlleva ningún castigo. 1060 01:18:13,479 --> 01:18:18,960 Luego, al comenzar el juego, ojo, estamos arrancando el juego y evidentemente arrancamos vivos. 1061 01:18:18,960 --> 01:18:21,859 Si empezamos muertos, pues ya sería mal asunto, ¿vale? 1062 01:18:22,340 --> 01:18:25,260 Luego, las vidas con las que arrancamos, ¿vale? 1063 01:18:25,279 --> 01:18:27,420 Igual que está la energía, pues tendremos tres vidas, ¿vale? 1064 01:18:27,600 --> 01:18:33,539 Y luego veis que hay en el start, al arrancar, una operación aquí que ¿qué es? 1065 01:18:33,880 --> 01:18:36,659 Por como os he dicho antes, bueno, en realidad lo pone aquí. 1066 01:18:37,119 --> 01:18:40,220 Pero veis que se escribe igual que el instant seed de antes. 1067 01:18:40,220 --> 01:18:45,579 Es verdad que no hay nada dentro del paréntesis, pero esto es un método o una función, ¿vale? 1068 01:18:45,819 --> 01:18:47,579 Los métodos y funciones, ¿vale? 1069 01:18:47,579 --> 01:18:53,760 de arrancar el juego pone quiero que haya un impacto e impacto si yo voy a cualquier otro 1070 01:18:53,760 --> 01:18:58,680 script vale si yo voy a leer durante la tutoría que estaba haciendo ahora y en estar yo pongo 1071 01:18:58,680 --> 01:19:08,020 esto de impacto veis que no existe no sale vale no existe no es como instancia instancia siempre 1072 01:19:08,020 --> 01:19:14,100 existe yo pongo instancia y ahí está esperando hay que poner sus paréntesis y ahora que está 1073 01:19:14,100 --> 01:19:18,819 y sí que obliga a que haya aquí unos parámetros, ¿no? 1074 01:19:19,220 --> 01:19:22,739 ¿Vale? Como yo que sé, vamos a poner aquí, aunque dé fallo, 1075 01:19:22,840 --> 01:19:25,600 pues vamos a poner, bueno, no tenemos ninguno de tipo objeto, ¿vale? 1076 01:19:25,600 --> 01:19:29,539 No puedo poner ningún parámetro aquí porque va a dar fallo 1077 01:19:29,539 --> 01:19:33,439 porque nuevamente lo que nos está pidiendo es un GameObject, ¿vale? 1078 01:19:33,439 --> 01:19:35,960 Lo que hemos visto antes, que la primera sobrecarga, 1079 01:19:36,380 --> 01:19:38,020 su tipo tiene que ser de objeto, ¿vale? 1080 01:19:38,340 --> 01:19:41,079 Pero no sale el impacto que os estaba diciendo antes, 1081 01:19:41,380 --> 01:19:43,420 ni bien ni mal, no puedo hacer nada, 1082 01:19:43,420 --> 01:19:48,760 porque los métodos, lo que vamos a empezar a hacer también es que los creamos nosotros. 1083 01:19:48,939 --> 01:19:54,779 Es decir, bajo un nombre que nosotros ponemos, podremos ir, y veis que está aquí, 1084 01:19:55,199 --> 01:19:59,779 meter nosotros nuestras operaciones dentro de un bloque, en este caso, fijaos que es largo. 1085 01:19:59,779 --> 01:20:04,500 Y este bloque lo que va a hacer, que llega hasta aquí, el bloque impacto, hasta aquí, 1086 01:20:04,960 --> 01:20:11,260 todo esto es impacto, cuando yo ponga esta palabra, se va a ejecutar lo que hay aquí dentro. 1087 01:20:11,260 --> 01:20:13,399 entonces vais a ver 1088 01:20:13,399 --> 01:20:15,619 y esto también es importante, que por primera vez 1089 01:20:15,619 --> 01:20:17,159 cuando llegamos a un punto 1090 01:20:17,159 --> 01:20:19,479 aquí, saltamos 1091 01:20:19,479 --> 01:20:21,020 de aquí a aquí 1092 01:20:21,020 --> 01:20:23,159 en la ejecución, luego irá el update 1093 01:20:23,159 --> 01:20:24,619 que también tiene su impacto 1094 01:20:24,619 --> 01:20:26,779 pero primero 1095 01:20:26,779 --> 01:20:29,039 estamos llamando a este impacto 1096 01:20:29,039 --> 01:20:31,399 salta aquí y se va a reproducir lo que hay aquí 1097 01:20:31,399 --> 01:20:31,800 dentro 1098 01:20:31,800 --> 01:20:35,539 ¿por qué instantiate 1099 01:20:35,539 --> 01:20:37,159 si existe y aquí 1100 01:20:37,159 --> 01:20:39,380 existe por ejemplo 1101 01:20:39,380 --> 01:20:40,880 si pongo el método instantiate 1102 01:20:40,880 --> 01:20:58,939 Como os he dicho antes, impacto no existía en el otro lado, porque como os he dicho en varias ocasiones, cuando empezamos cualquier script tiene unas librerías y también hereda ciertos comportamientos, que es esto del Mono Behavior, que os suene, que ya nos da operaciones prehechas. 1103 01:20:58,939 --> 01:21:21,680 Es decir, para que leemos más, cuando, a ver, un segundico, a ver si lo pone claramente aquí. Bueno, existe la clase objeto, ¿vale? Que cuando yo me meto en Instanciate, vais a ver, a ver, me meto en esta, con el control volvemos a meternos, ¿vale? 1104 01:21:21,680 --> 01:21:33,300 Pone objeto instantiate, es una de las que ha cargado ya en la librería, ¿vale? Hay otra clase en otro sitio que está guardada en la librería Unity Engine, que cuando empezamos cualquier juego está aquí. 1105 01:21:33,300 --> 01:21:53,220 Si yo, por ejemplo, intentara poner Instantiate, como siempre ocurre y cualquier cosa, bueno, en esta como no lo voy a rellenar, me va a dar fallo siempre. Pero fijaos que este Instantiate funciona sin problema hasta que yo me cargo el, o lo comento mejor aún, comento el Unity Engine. 1106 01:21:53,220 --> 01:22:12,420 Y veis que Instantiate junto a otras muchas cosas, fijaos en las clases, dejan de funcionar, ¿vale? Entonces tenéis que ir entendiendo que existen las clases y los métodos que ya existen y luego los métodos que nosotros podemos ir haciendo para ir recopilando distintas acciones y que cada vez que pongamos esta frase, pues oye, haga todo esto. 1107 01:22:12,420 --> 01:22:22,039 Si yo quiero poner impacto varias veces en mi código, pues no tengo que escribir todas estas líneas, ya está recogido dentro de su propio bloque, ¿vale? Hasta aquí, ¿qué tal? 1108 01:22:22,039 --> 01:22:24,979 bueno 1109 01:22:24,979 --> 01:22:29,180 te has quedado en lo de impacto, entiendo, hasta aquí bien 1110 01:22:29,180 --> 01:22:31,399 sí, a ver, es que yo he estado 1111 01:22:31,399 --> 01:22:33,720 intentando hacerlo sin mirar esto que habías 1112 01:22:33,720 --> 01:22:35,699 puesto, conseguí no hallar ningún 1113 01:22:35,699 --> 01:22:37,479 error hasta lo de que me quedo sin escudo 1114 01:22:37,479 --> 01:22:38,819 que ya ahí colapsé 1115 01:22:38,819 --> 01:22:40,739 pero cuando meto el impacto 1116 01:22:40,739 --> 01:22:43,399 no me lo reconoce, me dice que no puede hacer un 1117 01:22:43,399 --> 01:22:44,119 buen impacto 1118 01:22:44,119 --> 01:22:46,079 ya he entrado ahí 1119 01:22:46,079 --> 01:22:49,439 me doy la tutoría tranquilamente y supongo que 1120 01:22:49,439 --> 01:22:50,979 lo sacaréis y no te pregunto 1121 01:22:50,979 --> 01:22:53,720 realmente todavía no hemos explicado 1122 01:22:53,720 --> 01:22:55,119 cómo se crea esto 1123 01:22:55,119 --> 01:23:03,300 Es decir, todavía no he explicado cómo se crea esto, es decir, que va más avanzada de lo que hemos explicado entonces, ¿vale? Así que bien. 1124 01:23:04,260 --> 01:23:16,539 Te quiero decir, solamente estoy como dejando caer muchas veces que cuando veamos una orden de este tipo con mayúscula y paréntesis, estamos llamando a un método y que hay métodos que ya vienen prehechos, ¿vale? 1125 01:23:16,539 --> 01:23:22,020 Por estas librerías y otros que no, que los hacemos nosotros. Ahora tenemos que aprender a hacerlo nosotros, ¿vale? 1126 01:23:22,020 --> 01:23:37,119 Pero hasta, aunque aquí llegamos y lo que pone aquí, invocamos a la función que realiza el impacto, es decir, que al empezar el juego estamos metiendo dentro de esta palabra impacto, pues que haya un impacto, que es lo que vamos a hacer aquí, ¿vale? 1127 01:23:37,699 --> 01:23:41,119 Vale, da igual ponerlo antes del void start o después. 1128 01:23:41,659 --> 01:23:43,199 ¿El impacto te refieres esto? 1129 01:23:43,420 --> 01:23:46,579 Todo, o sea, las declaraciones de las variables. 1130 01:23:46,579 --> 01:24:02,680 Vale, las variables cuando son globales, ¿no? Como hemos dicho antes, pueden ir aquí o pueden ir al final. Y vais a ver que cuando las pongo al final, ¿vale? Dentro de la clase, pero al final todo funciona. ¿Por qué? Porque está dentro de la clase. 1131 01:24:02,680 --> 01:24:05,460 entonces todo lo que se va 1132 01:24:05,460 --> 01:24:07,359 metiendo en bloques inferiores 1133 01:24:07,359 --> 01:24:09,300 pues puede acceder a estas clases 1134 01:24:09,300 --> 01:24:11,439 pero sí que es verdad que es mucho 1135 01:24:11,439 --> 01:24:13,479 más intuitivo y es la convención 1136 01:24:13,479 --> 01:24:15,640 aparte, que esto vive mucho de convenciones 1137 01:24:15,640 --> 01:24:17,500 de que todas las, incluso 1138 01:24:17,500 --> 01:24:19,439 aunque luego sigamos picando código aquí abajo 1139 01:24:19,439 --> 01:24:21,000 y queramos crear una nueva variable 1140 01:24:21,000 --> 01:24:23,460 si queremos que sea global de toda la clase 1141 01:24:23,460 --> 01:24:25,020 subimos y la ponemos aquí 1142 01:24:25,020 --> 01:24:27,439 porque así de un vistazo rápido 1143 01:24:27,439 --> 01:24:29,520 tenemos todas las que son 1144 01:24:29,520 --> 01:24:30,619 globales ya englobadas 1145 01:24:30,619 --> 01:24:32,319 se puede mientras esté 1146 01:24:32,319 --> 01:24:34,520 dentro del bloque correspondiente 1147 01:24:34,520 --> 01:24:36,479 a donde queremos que funcione, que por eso he explicado 1148 01:24:36,479 --> 01:24:37,960 lo del encapsulamiento 1149 01:24:37,960 --> 01:24:40,500 funcionaría, pero la convención dice 1150 01:24:40,500 --> 01:24:41,159 que lo hagamos aquí 1151 01:24:41,159 --> 01:24:43,460 de hecho hay más convenciones 1152 01:24:43,460 --> 01:24:45,720 porque ahora mismo todas son private 1153 01:24:45,720 --> 01:24:48,319 y a veces iréis incluso viendo 1154 01:24:48,319 --> 01:24:50,340 o que 1155 01:24:50,340 --> 01:24:52,439 hay gente que dirá, siempre que creo una 1156 01:24:52,439 --> 01:24:54,619 variable private empiezo con una barra baja 1157 01:24:54,619 --> 01:24:56,659 para que así al ir cambiándolo 1158 01:24:56,659 --> 01:24:57,619 en el código 1159 01:24:57,619 --> 01:25:00,180 saber que es una variable privada 1160 01:25:00,180 --> 01:25:05,199 que no la voy a declarar mediante el inspector, sino que la voy a ir declarando yo siempre a mano en el código, 1161 01:25:05,659 --> 01:25:08,100 porque no se puede ir al editor de Unity y cambiarlo si es privada. 1162 01:25:08,899 --> 01:25:15,859 Luego hay gente, lo digo por si encontráis, que siempre que haga una variable global le pone m barra baja, 1163 01:25:16,140 --> 01:25:21,279 vamos, habría que ponerlo en todas, y todas las que va generando dentro de métodos o de niveles inferiores, 1164 01:25:21,399 --> 01:25:24,000 como este int, por ejemplo, pues va sin la barra baja. 1165 01:25:24,520 --> 01:25:27,739 Y esto sirve para saber cuáles son variables globales y distinguirlas de las que no. 1166 01:25:27,739 --> 01:25:30,560 pero esto ya son convenciones que van más adelante 1167 01:25:30,560 --> 01:25:32,479 es decir, que vamos primero a lo básico 1168 01:25:32,479 --> 01:25:34,140 vale, gracias 1169 01:25:34,140 --> 01:25:35,760 nada, perdona que 1170 01:25:35,760 --> 01:25:38,619 sé que me preguntas una cosa y te correspondo 1171 01:25:38,619 --> 01:25:40,340 con tres, no, no, no, no pasa nada 1172 01:25:40,340 --> 01:25:41,760 pero es que así van sonando las cosas 1173 01:25:41,760 --> 01:25:44,300 vale, entonces se puede 1174 01:25:44,300 --> 01:25:46,260 declarar incluso, fíjate, vale 1175 01:25:46,260 --> 01:25:48,380 la quito 1176 01:25:48,380 --> 01:25:50,319 de aquí, pero aquí dentro 1177 01:25:50,319 --> 01:25:52,319 vale, digamos que aquí hay un bloque que se cierra 1178 01:25:52,319 --> 01:25:53,699 aquí y aquí empieza otro 1179 01:25:53,699 --> 01:25:55,600 es decir, si lo declarara aquí en medio 1180 01:25:55,600 --> 01:25:58,460 también lo estoy declarando dentro de la clase y no da problema 1181 01:25:58,460 --> 01:26:00,279 pero claro, tú cuando luego quieras 1182 01:26:00,279 --> 01:26:02,380 descubrir dónde están las variables de toda 1183 01:26:02,380 --> 01:26:04,220 la clase, como empieces a 1184 01:26:04,220 --> 01:26:05,819 no organizarlo bien, te vuelves loco 1185 01:26:05,819 --> 01:26:08,279 por eso, justo debajo de clase 1186 01:26:08,279 --> 01:26:10,699 las que son variables globales se declaran 1187 01:26:10,699 --> 01:26:12,319 y además si trabajas 1188 01:26:12,319 --> 01:26:14,359 en un equipo, pues todos saben dónde están las variables 1189 01:26:14,359 --> 01:26:16,520 globales y todos están contentos de encontrarlos 1190 01:26:16,520 --> 01:26:17,600 rápido, ¿vale? 1191 01:26:18,140 --> 01:26:20,060 Hay gente que lo pone al final por lo mismo 1192 01:26:20,060 --> 01:26:22,380 porque saben que están al final 1193 01:26:22,380 --> 01:26:24,220 de la clase y lo encuentran antes, pero 1194 01:26:24,220 --> 01:26:27,079 como luego dentro de un mismo script 1195 01:26:27,079 --> 01:26:29,260 se pueden crear varias clases, que esta es otra cosa 1196 01:26:29,260 --> 01:26:31,100 se crea 1197 01:26:31,100 --> 01:26:33,119 la clase a continuación y si lo pones 1198 01:26:33,119 --> 01:26:35,140 justo debajo de donde se declara, pues más claro 1199 01:26:35,140 --> 01:26:37,140 el mejor sitio, vaya 1200 01:26:37,140 --> 01:26:38,039 vale 1201 01:26:38,039 --> 01:26:39,479 en el 1202 01:26:39,479 --> 01:26:43,159 en las variables 1203 01:26:43,159 --> 01:26:45,119 también habla de arrays 1204 01:26:45,119 --> 01:26:46,760 esto es más avanzado, vale 1205 01:26:46,760 --> 01:26:48,760 pero es simplemente para que también os suene 1206 01:26:48,760 --> 01:26:51,119 un array, que a veces se puede llamar matriz o arreglo 1207 01:26:51,979 --> 01:26:52,199 vale 1208 01:26:52,199 --> 01:27:18,140 Se pueden, dentro de una sola caja, meter muchos tipos de datos. Y de hecho, un array, para que os hagáis cuenta, cuando metemos, aunque no está declarado específicamente, a ver por qué no me está abriendo esto, aquí, cuando generamos una variable, por ejemplo, de transform, no estamos metiendo un dato como los números que metemos, un 10 o Daniel o 5. 1209 01:27:18,680 --> 01:27:21,560 Como os he dicho antes, se están guardando un montón de valores, ¿vale? 1210 01:27:21,560 --> 01:27:25,699 Al final esto, si habéis estudiado matrices en matemáticas, esto es un poco parecido a una matriz. 1211 01:27:26,119 --> 01:27:29,399 Es decir, que hay muchas posiciones de esa variable, ¿vale? 1212 01:27:29,439 --> 01:27:29,960 Que os suene. 1213 01:27:31,100 --> 01:27:33,460 Esto es más avanzada, así que me lo salto ahora mismo, ¿vale? 1214 01:27:33,880 --> 01:27:35,439 Ya tendrá más sentido más adelante. 1215 01:27:36,420 --> 01:27:39,939 En esta sección, voy un poco en el orden ahora para ir resolviendo dudas. 1216 01:27:40,840 --> 01:27:43,760 Aquí veis lo que acabamos de hablar, de cómo se declaran las variables, 1217 01:27:43,760 --> 01:27:52,539 un poco pues inconvenientes que se pueden encontrar etcétera y hay otro otras digamos 1218 01:27:52,539 --> 01:27:57,880 instrucciones importantes otros operadores también vale que son estos que tenemos aquí 1219 01:27:57,880 --> 01:28:04,399 estos son bastante importantes porque se usan de vez en cuando y si no pues de pronto saltáis esto 1220 01:28:04,399 --> 01:28:08,880 porque no parece importante pero si lo es vale poner trucos de programador como un extra pero 1221 01:28:08,880 --> 01:28:10,100 No es una extra, es importante, ¿vale? 1222 01:28:10,500 --> 01:28:15,340 Es los operadores más más, los operadores menos menos, más igual y menos igual. 1223 01:28:15,420 --> 01:28:16,619 Me quedo en estos, ¿vale? 1224 01:28:17,800 --> 01:28:21,939 Hoy no voy a avanzar más de aquí, de las variables. 1225 01:28:22,100 --> 01:28:23,760 Y bueno, lo que hemos ido viendo de otras cosas. 1226 01:28:26,520 --> 01:28:29,579 En las variables acabamos de decir que existen estos operadores. 1227 01:28:29,640 --> 01:28:30,600 Lo dejo aquí, ¿vale? 1228 01:28:30,859 --> 01:28:32,159 El más más y el menos menos. 1229 01:28:33,739 --> 01:28:36,119 A ver, me voy al de durante la tutoría. 1230 01:28:37,100 --> 01:28:38,659 Y voy a simplificar un poco esto, ¿vale? 1231 01:28:38,880 --> 01:28:47,800 en indicador máximo de vida era un booleano, me voy a cargar todo lo que ya no me interese y me voy a quedar con un int, por ejemplo, ¿vale? Para hacerlo más simple. 1232 01:28:48,260 --> 01:29:00,020 Cuando estamos en cualquier punto del código, puede haber momentos en los que queremos que una variable vaya sumando progresivamente de uno en uno su valor, ¿vale? 1233 01:29:00,020 --> 01:29:22,720 ¿Eso qué significa? Que a veces hacemos lo que se llaman bucles, ¿vale? Si vais más adelante se habla del for, del while, del while do, bueno, hay varios, más avanzado también, pero que lo que van haciendo esos bucles es ir recorriendo varios elementos y esos elementos van, digamos, siendo posiciones, ¿no? 1234 01:29:22,720 --> 01:29:44,260 Por ejemplo, imaginaos, por decirlo así, vemos el típico ranking de una recreativa antigua, ¿vale? Lo pongo aquí, ranking recreativa, a ver si sale lo que yo quiero que salga, que no lo sé, imágenes, ¿vale? Lo típico, los mejores cinco resultados, ¿vale? Y esta va a ser la primera posición, la segunda, la tercera, la cuarta, la quinta y ya no existen más. 1235 01:29:44,260 --> 01:29:47,060 entonces habrá un momento que nos va a ir interesando 1236 01:29:47,060 --> 01:29:49,720 que vaya, pues eso, muestra la 1 1237 01:29:49,720 --> 01:29:51,720 cuando muestra la 1, muestra la 2 1238 01:29:51,720 --> 01:29:53,100 cuando muestra la 2, muestra la 3 1239 01:29:53,100 --> 01:29:54,600 veis que va sumando progresivamente 1240 01:29:54,600 --> 01:29:57,819 en ese momento se usa este operador 1241 01:29:57,819 --> 01:29:58,840 más más, ¿vale? 1242 01:29:58,840 --> 01:30:00,600 que es una forma de simplificar 1243 01:30:00,600 --> 01:30:04,100 que sumamos 1244 01:30:04,100 --> 01:30:05,380 1 1245 01:30:05,380 --> 01:30:07,880 a la variable 1246 01:30:07,880 --> 01:30:09,180 ¿vale? 1247 01:30:09,560 --> 01:30:10,739 ¿esto qué significa? 1248 01:30:10,939 --> 01:30:13,039 que si yo ahora mismo pongo aquí vida 1249 01:30:13,039 --> 01:30:16,779 ¿Qué me va a mostrar en consola? 1250 01:30:22,300 --> 01:30:22,819 27 1251 01:30:22,819 --> 01:30:23,899 No, 26 1252 01:30:23,899 --> 01:30:26,920 Vale, 25, le sumo 1 1253 01:30:26,920 --> 01:30:29,000 Y 26, vale, vamos a ello 1254 01:30:29,000 --> 01:30:33,279 26, perfecto 1255 01:30:33,279 --> 01:30:35,359 ¿Vale? Esto luego habrá otras operaciones 1256 01:30:35,359 --> 01:30:36,720 Que puede sumar más más 1257 01:30:36,720 --> 01:30:38,720 5 veces, porque digamos que 5 veces 1258 01:30:38,720 --> 01:30:40,939 Pues irá pasando por las 5 posiciones 1259 01:30:40,939 --> 01:30:42,119 Para mostrar ese ranking 1260 01:30:42,119 --> 01:30:44,239 ¿Vale? Es un operador muy importante 1261 01:30:44,239 --> 01:30:46,479 Si pones 4 más eso más 2 1262 01:30:46,479 --> 01:30:47,079 No, no 1263 01:30:47,079 --> 01:30:49,020 pregunto 1264 01:30:49,020 --> 01:30:50,979 no, no, no, es decir, si voy poniendo más 1265 01:30:50,979 --> 01:30:52,439 se vuelve loco 1266 01:30:52,439 --> 01:30:55,380 vale, esto es lo mismo 1267 01:30:55,380 --> 01:30:57,439 y esto es otra sintaxis que suele 1268 01:30:57,439 --> 01:30:59,460 dar problema al principio 1269 01:30:59,460 --> 01:31:01,340 ¿vale? que es, que esto mismo 1270 01:31:01,340 --> 01:31:03,199 es la forma resumida de escribir esto 1271 01:31:03,199 --> 01:31:05,260 ¿vale? y vais a decir, esto no tiene mucho 1272 01:31:05,260 --> 01:31:06,760 sentido, bueno, hasta que 1273 01:31:06,760 --> 01:31:08,699 lo tenga, ¿vale? 1274 01:31:09,140 --> 01:31:11,119 esto y esto 1275 01:31:11,119 --> 01:31:12,779 es exactamente lo mismo 1276 01:31:12,779 --> 01:31:15,319 ¿vale? y vais a decir, ¿cómo vida 1277 01:31:15,319 --> 01:31:16,779 es igual a vida más uno? ¿no? 1278 01:31:17,079 --> 01:31:25,199 Si lo pensamos en álgebra humana, esto no tiene sentido porque estamos pensando como pensarían las matemáticas, ¿no? Las ecuaciones. 1279 01:31:25,840 --> 01:31:35,100 Pero recordad que aquí lo que estamos haciendo es, esta caja, esta variable, ¿vale? Es igual, ¿vale? Se le asigna lo que ya vale ahora mismo más 1. 1280 01:31:36,079 --> 01:31:46,939 Entonces, esto significa que lo que hay en esta caja, ¿vale? Es igual a lo que guarde la caja, ¿vale? Aquí está refiriéndose a abrir la caja y aquí se está refiriendo al contenido de la caja, ¿vale? 1281 01:31:47,079 --> 01:31:56,899 Aquí siempre hablamos de declarar la variable o llamar a una variable e inicializarla o cambiar el valor. El igual no es igual, no es un igual de matemáticas, es un asignador. 1282 01:31:57,520 --> 01:32:02,920 Entonces, vida es igual a vida más uno. Es decir, en esta caja vamos a guardar lo que valga vida más uno. 1283 01:32:03,720 --> 01:32:14,140 Y si volviéramos a poner aquí vida, pongo otra vez esta línea, cuando yo muestre otra vez la misma instrucción, no son lo mismo. 1284 01:32:14,140 --> 01:32:16,739 ¿Vale? ¿Qué pensáis que va a poner ahora 1285 01:32:16,739 --> 01:32:17,880 en la consola? 1286 01:32:18,819 --> 01:32:20,260 Lo mismo, 26 1287 01:32:20,260 --> 01:32:22,500 Aquí 26, ¿vale? 1288 01:32:22,539 --> 01:32:24,479 Pero estoy diciéndole otra vez, recordad 1289 01:32:24,479 --> 01:32:26,760 Pero porque te coge 1290 01:32:26,760 --> 01:32:28,800 la segunda 1291 01:32:28,800 --> 01:32:30,600 orden que estás dando el resultado 1292 01:32:30,600 --> 01:32:32,859 de la primera y no el resultado 1293 01:32:32,859 --> 01:32:33,720 del que has declarado 1294 01:32:33,720 --> 01:32:36,899 Ahora lo explico, simplemente lo voy a enseñar para que me creáis 1295 01:32:36,899 --> 01:32:38,619 y luego os lo explico 1296 01:32:38,619 --> 01:32:40,220 Esto es 1297 01:32:40,220 --> 01:32:42,539 bastante simple y a la vez 1298 01:32:42,539 --> 01:32:47,359 bastante complicado veis que pone 26 y 27 volvemos a lo del encapsulamiento y 1299 01:32:47,359 --> 01:32:51,239 cuando se declaran las variables vale tenemos una variable global aquí arriba 1300 01:32:51,239 --> 01:32:57,000 vale con su caja y la inicial izamos con 25 como podría ser con cualquier valor 1301 01:32:57,000 --> 01:33:02,479 vale y vamos aquí y decimos vale en vida igual que en vez de antes decíamos ahora 1302 01:33:02,479 --> 01:33:06,880 vale 70 y lo decíamos así a las bravas entonces aquí enseña 70 no esto lo 1303 01:33:06,880 --> 01:33:11,359 vimos el otro día y lo hemos visto antes también quiero que sea lo que vale vida 1304 01:33:11,359 --> 01:33:13,939 más 1. Y aquí lo que está haciendo es 1305 01:33:13,939 --> 01:33:15,979 coger, todavía no lo hemos 1306 01:33:15,979 --> 01:33:17,640 asignado, está abierta la caja y aquí 1307 01:33:17,640 --> 01:33:19,960 hacemos la asignación. Está volviendo 1308 01:33:19,960 --> 01:33:21,460 a donde se declaró la variable, 1309 01:33:22,420 --> 01:33:23,119 coge este valor, 1310 01:33:24,260 --> 01:33:25,939 le suma 1 y lo guarda en vida. 1311 01:33:26,420 --> 01:33:27,720 Vale, y lo lee de arriba a abajo 1312 01:33:27,720 --> 01:33:29,800 y por eso suma 2. Y aquí lo aguarda como vida. 1313 01:33:30,060 --> 01:33:31,600 Pero es que cuando volvemos a esta caja, 1314 01:33:32,220 --> 01:33:33,659 vuelve a abrir la caja y aquí ya no vale 1315 01:33:33,659 --> 01:33:35,539 25 a estas alturas, vale a 26. 1316 01:33:35,960 --> 01:33:37,859 Vale. Y le sumamos 1317 01:33:37,859 --> 01:33:39,560 1. Y así progresivamente. Es decir, 1318 01:33:39,619 --> 01:33:40,739 si yo empezar a hacer esto, 1319 01:33:41,359 --> 01:33:55,680 Pues, sería 26, 27, 28, 29, ¿vale? Que es lo mismo, ¿vale? Os lo vuelvo a decir, en vez de escribir todo esto, es lo mismo que decir esto. Es a la caja, súmale 1, ¿vale? Es exactamente lo mismo. 1320 01:33:56,680 --> 01:34:07,720 Vale, pero si lo quisiera mencionar en otra caja que se vinculara con los 26, sí que le tendría que asignar como otro nombre a vida para que la otra cápsula te lo reconociera por 26 en vez de por 25, ¿o no? 1321 01:34:07,720 --> 01:34:09,899 No, aquí lo que va haciendo 1322 01:34:09,899 --> 01:34:11,880 claro, tú me estás hablando de abrir 1323 01:34:11,880 --> 01:34:13,220 otra variable distinta 1324 01:34:13,220 --> 01:34:15,279 claro, si tú abres otra variable pues 1325 01:34:15,279 --> 01:34:16,520 esto se llamará 1326 01:34:16,520 --> 01:34:19,800 muerte, no sé, y esto tendrá 1327 01:34:19,800 --> 01:34:21,380 otro valor, es decir, vida y muerte 1328 01:34:21,380 --> 01:34:22,380 son distintos 1329 01:34:22,380 --> 01:34:25,039 es decir, si yo 1330 01:34:25,039 --> 01:34:27,720 aquí digo muerte y le pongo 1331 01:34:27,720 --> 01:34:29,720 800 por poner un valor 1332 01:34:29,720 --> 01:34:31,619 muy distinto, aquí es que 1333 01:34:31,619 --> 01:34:33,180 muerte no está cambiando en ningún momento 1334 01:34:33,180 --> 01:34:35,840 es verdad que yo puedo ir aquí y decir muerte 1335 01:34:35,840 --> 01:34:37,260 ¿vale? 1336 01:34:37,720 --> 01:34:41,720 Y aquí me va a enseñar vida 25 más 1, 26. 1337 01:34:42,739 --> 01:34:45,000 Ha guardado 26 en la caja en este momento. 1338 01:34:45,520 --> 01:34:48,199 Ahora vuelvo aquí, que ya vale 26, estoy llamando a la caja. 1339 01:34:48,779 --> 01:34:50,140 26 más 1, 27. 1340 01:34:50,220 --> 01:34:52,560 En este momento va a enseñar 27, ¿vale? 1341 01:34:52,840 --> 01:34:54,760 Vuelvo a llamar a la caja vida. 1342 01:34:55,119 --> 01:34:57,140 He guardado 27 aquí antes, ¿vale? 1343 01:34:57,140 --> 01:34:58,699 27 más 1, 28. 1344 01:34:59,119 --> 01:35:01,979 En este momento la caja vale 28 y aquí enseñará 28. 1345 01:35:01,979 --> 01:35:03,699 Y aquí valdrá 29. 1346 01:35:04,340 --> 01:35:05,779 Pero aquí no va a enseñar 29, 1347 01:35:05,779 --> 01:35:08,180 porque es que lo que le estoy diciendo que enseñe no es vida 1348 01:35:08,180 --> 01:35:10,560 no es lo que hay en la caja vida, es la caja muerte 1349 01:35:10,560 --> 01:35:12,840 entonces va a enseñar 26, 27, 28 1350 01:35:12,840 --> 01:35:13,680 y 800 1351 01:35:13,680 --> 01:35:16,600 vale, pero si yo lo pusiera fuera de esas 1352 01:35:16,600 --> 01:35:17,039 llaves 1353 01:35:17,039 --> 01:35:20,380 sí que tendría que declarar 1354 01:35:20,380 --> 01:35:22,279 de otra manera la vida más uno 1355 01:35:22,279 --> 01:35:24,319 para que me lo reconociera porque estaría 1356 01:35:24,319 --> 01:35:26,260 fuera de todas estas llaves 1357 01:35:26,260 --> 01:35:27,439 no sé si me explico 1358 01:35:27,439 --> 01:35:30,239 claro, pero tú donde has declarado la variable es 1359 01:35:30,239 --> 01:35:31,680 a comienzo, es global 1360 01:35:31,680 --> 01:35:34,100 entonces se va a poder usar en toda la clase 1361 01:35:34,100 --> 01:35:35,020 sin problema 1362 01:35:35,020 --> 01:35:55,600 El problema viene de que yo la declaro aquí, como está en el ámbito, aquí sí que funciona, ¿no? Pero si yo luego en el update pongo vida, pues es lo de antes. Aunque yo ponga vida más uno, es que no sabe que es vida porque está fuera de su ámbito, ¿vale? 1363 01:35:55,600 --> 01:36:09,439 Sin embargo, muerte sí, porque aquí muerte se va a poder poner. Muerte es igual a 55. ¿Vale? O mejor aún, mira. ¿Sí? ¿Me vas siguiendo? 1364 01:36:10,000 --> 01:36:10,260 Sí. 1365 01:36:10,260 --> 01:36:28,479 Vale, o mejor aún, voy a comentar esto para que en el Star no haga nada y no salgan muchos numerajos, pero imagínate que en el update, que recuerda que se va planteando en cada fotograma, quito lo de muerte 55, digo que cada fotograma me enseñe lo que vale muerte. 1366 01:36:28,479 --> 01:36:31,880 que esto por ejemplo puede servir para un contador 1367 01:36:31,880 --> 01:36:33,920 aquí 1368 01:36:33,920 --> 01:36:35,100 muerte 1369 01:36:35,100 --> 01:36:37,060 ¿qué crees que va a pasar? 1370 01:36:37,859 --> 01:36:39,260 como la he declarado arriba 1371 01:36:39,260 --> 01:36:41,199 la puedo, como es global 1372 01:36:41,199 --> 01:36:43,539 la puedo hablar de muerte de esta variable 1373 01:36:43,539 --> 01:36:45,520 en cualquier lado, ¿qué va a ir pasando? 1374 01:36:46,720 --> 01:36:47,819 que va a sumar 801 1375 01:36:47,819 --> 01:36:50,159 802, 803 porque la has puesto 1376 01:36:50,159 --> 01:36:52,640 en el que se va cargando 1377 01:36:52,640 --> 01:36:53,500 por fotograma 1378 01:36:53,500 --> 01:36:55,579 exacto, empieza valiendo 800 1379 01:36:55,579 --> 01:36:57,340 en el fotograma siguiente le digo, ojo 1380 01:36:57,340 --> 01:36:58,939 súmale uno y me lo enseñas 1381 01:36:58,939 --> 01:37:01,960 y aquí guarda 801, porque está fuera del update 1382 01:37:01,960 --> 01:37:03,340 en el siguiente 1383 01:37:03,340 --> 01:37:05,079 801, súmale uno 1384 01:37:05,079 --> 01:37:06,920 pues enseñará 802 1385 01:37:06,920 --> 01:37:09,479 y guarda 802, y ahora vas a ver que tenemos 1386 01:37:09,479 --> 01:37:10,659 como una especie de contador 1387 01:37:10,659 --> 01:37:13,239 muy poco refinado, pero 1388 01:37:13,239 --> 01:37:15,399 vas a ver que cada fotograma 1389 01:37:15,399 --> 01:37:16,659 espera, perdón 1390 01:37:16,659 --> 01:37:18,960 vale, ahí 1391 01:37:18,960 --> 01:37:20,300 pues va a ir sumando 1392 01:37:20,300 --> 01:37:23,760 cada fotograma, que por segundo se ejecuta mucho fotograma 1393 01:37:23,760 --> 01:37:25,079 por eso va como a saltos 1394 01:37:25,079 --> 01:37:28,100 Pero sí que se están planteando, ¿vale? 1395 01:37:28,939 --> 01:37:29,979 ¿Ves que van sumándose? 1396 01:37:30,159 --> 01:37:30,300 Sí. 1397 01:37:30,899 --> 01:37:31,939 ¿Vale? Que no va de uno en uno. 1398 01:37:32,380 --> 01:37:34,239 Bueno, si vas parando sí van de uno en uno, 1399 01:37:34,359 --> 01:37:36,479 pero se juzguta más rápido del uno en uno. 1400 01:37:37,079 --> 01:37:37,439 ¿Vale? 1401 01:37:37,880 --> 01:37:39,180 Entonces, pues mira, por ejemplo, 1402 01:37:39,260 --> 01:37:41,220 una aplicación práctica para hacer un contador. 1403 01:37:41,340 --> 01:37:42,500 Pues mira, el más más puede servir. 1404 01:37:43,100 --> 01:37:45,619 Y lo mismo, esto es igual a muerte más uno. 1405 01:37:46,199 --> 01:37:47,819 Es exactamente lo mismo. 1406 01:37:48,640 --> 01:37:49,560 Va a dar el mismo resultado. 1407 01:37:49,680 --> 01:37:51,260 Si quieres lo comprobamos, pero te lo digo yo. 1408 01:37:51,260 --> 01:37:51,779 Sí, sí, lo da. 1409 01:37:52,000 --> 01:37:52,220 Vale. 1410 01:37:52,220 --> 01:38:14,979 Y, vale, muerte más uno, vuelvo aquí a los apuntes, ¿vale? Este operador, importante que sepáis, bueno, esto lo apago, que ya está aquí usado, cuántas cosas, ¿vale? Y esto también, esto que estoy poniendo de vida igual vida más uno, también se puede poner con otra forma resumida que son estas, ¿vale? 1411 01:38:14,979 --> 01:38:26,539 Bueno, ojo, no he puesto el menos menos, pero el menos menos lo que va haciendo es restar uno, ¿vale? Cada vez que se invoque. Igual. Si queréis hacemos las pruebas, pero por no perder tiempo. Pero existe el más igual y el menos igual, ¿vale? 1412 01:38:26,880 --> 01:38:44,579 Si yo voy al más igual, lo que se puede hacer es, para no tener que repetir, que incluso es la confusión que nos viene siempre, en vez de poner muerte igual a muerte más uno, cuando se va a hacer una operación sobre la misma variable, sobre la propia variable, se puede hacer igual más uno. 1413 01:38:44,579 --> 01:39:10,739 ¿Y esto qué significa? Que muerte pasa a valer lo que valga más 1 o más 7 en este caso, ¿vale? Ahora se van a ir sumando de 7 en 7, va a ir 807, 814, ¿vale? Y cada fotograma va a ir enseñándolo, ¿vale? ¿Por qué no lo está haciendo bien? Pues por una cosa muy simple, que es que he puesto igual más, no más igual, ¿vale? Importante. 1414 01:39:10,739 --> 01:39:13,579 ¿no? he puesto igual más 1415 01:39:13,579 --> 01:39:15,619 y la operación es más igual 1416 01:39:15,619 --> 01:39:17,899 ¿vale? ahora mismo 1417 01:39:17,899 --> 01:39:19,260 esta línea como no tiene sentido 1418 01:39:19,260 --> 01:39:22,239 ¿vale? le estaba diciendo que era un 7 positivo 1419 01:39:22,239 --> 01:39:24,119 básicamente, entonces siempre vale 7 1420 01:39:24,119 --> 01:39:25,260 que no es lo mismo que 1421 01:39:25,260 --> 01:39:27,479 cada vez que dé una vuelta en este caso 1422 01:39:27,479 --> 01:39:28,640 vaya sumándole 7 1423 01:39:28,640 --> 01:39:31,760 ahora sí que va a ir 800, 800 1424 01:39:31,760 --> 01:39:33,380 7, va a ir 1425 01:39:33,380 --> 01:39:34,720 lo paro porque si no esto 1426 01:39:34,720 --> 01:39:37,260 se vuelve loco, ¿vale? 1427 01:39:37,359 --> 01:39:39,960 807, va sumando 7 en cada ocasión 1428 01:39:39,960 --> 01:39:41,239 que es la cifra que hemos puesto 1429 01:39:41,239 --> 01:39:44,659 si aquí lo pusiéramos 1430 01:39:44,659 --> 01:39:45,460 con el menos 1431 01:39:45,460 --> 01:39:48,699 aquí lo bueno es que podemos determinar que sean saltos más allá del 1 1432 01:39:48,699 --> 01:39:50,579 ¿vale? porque en el más más sí que es 1 1433 01:39:50,579 --> 01:39:52,800 por ejemplo, aquí también podríamos poner 7 1434 01:39:52,800 --> 01:39:53,319 por ejemplo 1435 01:39:53,319 --> 01:39:56,659 si aquí ponemos que vaya restando 1 en cada fotograma 1436 01:40:01,520 --> 01:40:02,020 pues será 1437 01:40:02,020 --> 01:40:04,079 lo paro y voy para arriba 1438 01:40:04,079 --> 01:40:04,880 para ver lo que ha hecho 1439 01:40:04,880 --> 01:40:09,159 va restando 1 en cada vuelta 1440 01:40:09,159 --> 01:40:09,880 ¿vale? 1441 01:40:11,159 --> 01:40:13,020 eso es importante, ¿qué tal hasta aquí? 1442 01:40:13,880 --> 01:40:14,180 bien 1443 01:40:14,180 --> 01:40:42,430 Sí, ¿no? Más o menos, ahí va. Hay una última cosa que quiero que sepáis, que es, que antes lo hemos visto, que es, por un lado, que cuando tenemos algún, a ver, que lo voy a tener que crear porque no lo tengo, cuando tenemos algún valor público o con serialized fill, como aquí, a ver, serialized fill, es decir, que lo asignamos, lo podemos asignar por el editor, ¿no? Como hemos hecho, pero en este caso es un número, ¿vale? 1444 01:40:42,430 --> 01:41:00,770 Yo aquí le he asignado 800 y esto lo voy a comentar para no complicarlo más. Yo aquí le estoy diciendo que esto vale 800 y yo voy al script durante la tutoría y pone 800. Y yo digo, bueno, no, 800 no, 950. 1445 01:41:00,770 --> 01:41:02,729 vale, es verdad que aunque 1446 01:41:02,729 --> 01:41:05,029 bueno, espera, y en el start 1447 01:41:05,029 --> 01:41:06,850 voy a decir que me enseñé que está 1448 01:41:06,850 --> 01:41:08,890 guardando muerte, porque si no 1449 01:41:08,890 --> 01:41:11,170 no sabemos que está interpretando internamente 1450 01:41:11,170 --> 01:41:11,470 el 1451 01:41:11,470 --> 01:41:14,810 programa, vale, cuando 1452 01:41:14,810 --> 01:41:16,390 empiece el juego enséame lo que vale muerte 1453 01:41:16,390 --> 01:41:18,949 y aquí yo he inicializado muerte 1454 01:41:18,949 --> 01:41:21,010 y pone 800, lo lógico 1455 01:41:21,010 --> 01:41:22,789 sería que pusiera 800, que era 1456 01:41:22,789 --> 01:41:24,189 el problema que estaba dando antes 1457 01:41:24,189 --> 01:41:26,390 yo cuando voy y arranco el juego 1458 01:41:26,390 --> 01:41:27,710 ¿qué es lo que me pone? 1459 01:41:28,729 --> 01:41:30,369 950, vale 1460 01:41:30,369 --> 01:41:48,029 Quiero que entendáis que los códigos, igual que si aquí pongo 800 y al arrancar el juego, aunque aquí la haya declarado, luego ponga muerte igual a 1000. Aquí si no lo tuviera serializado y lo cambiara, lo que me va a enseñar es 1000. 1461 01:41:48,029 --> 01:41:59,430 Porque aunque aquí esté de comienzo inicializado como 800, luego al arrancar el juego, digamos que hay una operación posterior, que es que al arrancar el juego, pues oye, me dice que vale 1000. 1462 01:41:59,550 --> 01:42:01,149 Entonces lo que me va a enseñar es 1000. 1463 01:42:01,729 --> 01:42:10,390 Pero hay algo más allá incluso que es que todo lo que hagamos en el inspector, más allá del código, más cercano digamos a la ejecución, sobrescribe a lo que vamos haciendo en el código. 1464 01:42:10,390 --> 01:42:29,350 Por tanto, podremos ir variando, ¿veis? Verás que vuelve a salir, aquí ha salido el 1000, porque es verdad que cuando arranca el juego, aunque yo haya cambiado esto, ¿vale? Como yo he cambiado el juego y le he dicho al arrancar la ejecución, ponmelo en 1000, ¿vale? 1465 01:42:29,350 --> 01:42:31,970 sobrescribe al empezar el juego 1466 01:42:31,970 --> 01:42:34,050 en un momento de ejecución lo que yo ya he hecho 1467 01:42:34,050 --> 01:42:35,949 tanto en la declaración inicial 1468 01:42:35,949 --> 01:42:38,329 ¿vale? como en la sobrescriptura 1469 01:42:38,329 --> 01:42:40,090 que tenemos aquí, que sí que es verdad 1470 01:42:40,090 --> 01:42:41,750 que si no hiciera nada más 1471 01:42:41,750 --> 01:42:43,689 ¿vale? como no hay un momento de ejecución 1472 01:42:43,689 --> 01:42:45,229 no hay un momento en el que lo vuelve a cambiar 1473 01:42:45,229 --> 01:42:47,350 pero tened ojo con que a veces 1474 01:42:47,350 --> 01:42:49,829 poner aquí las instrucciones puede dar 1475 01:42:49,829 --> 01:42:51,970 este tipo de problemas, que hay un orden de ejecución 1476 01:42:51,970 --> 01:42:53,729 ¿vale? ya os iréis pegando con ello 1477 01:42:53,729 --> 01:42:56,010 no sé si me vais siguiendo pero eso 1478 01:42:56,010 --> 01:42:57,810 aquí al inicializar 1479 01:42:57,810 --> 01:43:00,510 aportamos un valor, pero luego hay momentos de ejecución, 1480 01:43:00,890 --> 01:43:03,729 como el start y el update, que pueden ir sobreescribiendo 1481 01:43:03,729 --> 01:43:04,050 valores. 1482 01:43:04,770 --> 01:43:06,130 Pero este sería el ice field. 1483 01:43:06,130 --> 01:43:13,829 Y el public también se puede variar dentro del propio script. 1484 01:43:14,029 --> 01:43:15,989 Y, de hecho, para que os hagáis una idea, 1485 01:43:16,689 --> 01:43:22,329 yo aquí pongo serializar el campo, ¿vale? 1486 01:43:22,430 --> 01:43:23,789 Lo inicializo como 800. 1487 01:43:23,789 --> 01:43:26,069 al empezar lo pongo en 1000 1488 01:43:26,069 --> 01:43:28,170 y quiero que la muerte 1489 01:43:28,170 --> 01:43:29,729 me lo vaya enseñando en el update 1490 01:43:29,729 --> 01:43:31,829 que cada fotograma me vaya enseñando esta cifra 1491 01:43:31,829 --> 01:43:34,189 y guardo, y vais a ver que pasa una cosa 1492 01:43:34,189 --> 01:43:36,090 que mezcla todo esto 1493 01:43:36,090 --> 01:43:36,670 que acabo de decir 1494 01:43:36,670 --> 01:43:40,010 yo arrancaré el juego, al arrancar 1495 01:43:40,010 --> 01:43:41,949 se me pone en 1000, sobre escribiendo 1496 01:43:41,949 --> 01:43:43,750 esto que está en 1132 1497 01:43:43,750 --> 01:43:45,430 a ver, placa 1498 01:43:45,430 --> 01:43:46,930 se pone 1000 1499 01:43:46,930 --> 01:43:49,970 y vale, pues 1000, me lo ha puesto 1000 incluso aquí 1500 01:43:49,970 --> 01:43:52,090 pero cuando yo ya he arrancado el juego 1501 01:43:52,090 --> 01:43:55,430 como digamos que esta orden ya se ha ejecutado 1502 01:43:55,430 --> 01:43:56,590 y no lo va a sobreescribir 1503 01:43:56,590 --> 01:43:58,529 al final lo que va a importar es 1504 01:43:58,529 --> 01:44:00,050 lo que yo vaya poniendo aquí 1505 01:44:00,050 --> 01:44:01,670 y veis que va cambiando el valor 1506 01:44:01,670 --> 01:44:04,670 y podría ir cambiando desde el editor a mano 1507 01:44:04,670 --> 01:44:05,770 ciertos valores 1508 01:44:05,770 --> 01:44:07,770 ¿vale? que os suene 1509 01:44:07,770 --> 01:44:08,909 ¿pero para qué? 1510 01:44:10,090 --> 01:44:12,789 pues por ejemplo imagínate que quieres probar 1511 01:44:12,789 --> 01:44:14,130 hacia donde se mueve una nave 1512 01:44:14,130 --> 01:44:15,890 de una forma intuitiva 1513 01:44:15,890 --> 01:44:18,590 porque tú cuando arrancas el juego 1514 01:44:18,590 --> 01:44:19,649 no puedes cambiar el código 1515 01:44:19,649 --> 01:44:21,909 el código, digamos que una vez arranca 1516 01:44:21,909 --> 01:44:23,949 no se puede cambiar, pero nos puede 1517 01:44:23,949 --> 01:44:25,890 interesar probar cosas que 1518 01:44:25,890 --> 01:44:28,109 sí que se ejecutan durante el juego, como esto 1519 01:44:28,109 --> 01:44:29,930 pero luego lo tendrías que cambiar 1520 01:44:29,930 --> 01:44:32,010 en el código, ¿no? es que estoy cambiando el código 1521 01:44:32,010 --> 01:44:34,210 aunque no lo parezca, o sea, aunque no salga 1522 01:44:34,210 --> 01:44:35,930 en el CESAR, es como si 1523 01:44:35,930 --> 01:44:38,069 estuviera cambiando, ¿no? claro, yo con este serial 1524 01:44:38,069 --> 01:44:39,970 I feel, estoy accediendo a esta 1525 01:44:39,970 --> 01:44:40,890 variable en todo momento 1526 01:44:40,890 --> 01:44:43,890 y siempre y cuando sea en un momento de 1527 01:44:43,890 --> 01:44:45,649 ejecución que se pueda ver 1528 01:44:45,649 --> 01:44:47,229 cómo voy cambiando el valor de muerte 1529 01:44:47,229 --> 01:44:49,430 yo en todo momento tengo abierta esta caja 1530 01:44:49,430 --> 01:44:51,649 en vez de cambiarlo como aquí, lo estoy cambiando 1531 01:44:51,649 --> 01:44:53,329 pero por el editor, en vivo 1532 01:44:53,329 --> 01:44:55,010 ¿vale? 1533 01:44:55,310 --> 01:44:57,350 yo lo que vale muerte lo estoy cambiando 1534 01:44:57,350 --> 01:44:59,550 ahora mismo, en este mismo instante 1535 01:44:59,550 --> 01:45:01,529 muerte no vale ni 800 ni 1000 1536 01:45:01,529 --> 01:45:02,970 vale 1657 1537 01:45:02,970 --> 01:45:05,329 ya lo iréis viendo 1538 01:45:05,329 --> 01:45:07,210 sobre todo, mira, en el siguiente tema ya de hecho 1539 01:45:07,210 --> 01:45:08,789 tiene aplicaciones, así que ya lo veréis 1540 01:45:08,789 --> 01:45:11,289 ¿vale? e importante, si en algún 1541 01:45:11,289 --> 01:45:13,350 momento queréis ir viendo como va 1542 01:45:13,350 --> 01:45:15,109 pues por ejemplo lo del más uno 1543 01:45:15,109 --> 01:45:17,189 que va cada fotograma, aquí vais 1544 01:45:17,189 --> 01:45:19,369 yendo fotograma a fotograma, aquí da igual 1545 01:45:19,369 --> 01:45:21,189 porque, mira, como está parado 1546 01:45:21,189 --> 01:45:23,770 el juego, si yo ahora cambio a 1896 1547 01:45:23,770 --> 01:45:25,069 al ir al siguiente 1548 01:45:25,069 --> 01:45:27,489 fotograma, pues 1896 1549 01:45:27,489 --> 01:45:29,090 ¿vale? que en ocasiones 1550 01:45:29,090 --> 01:45:30,989 puede que queramos ir viendo 1551 01:45:30,989 --> 01:45:32,890 qué va pasando cada fotograma, en vez de aquí 1552 01:45:32,890 --> 01:45:34,250 una sucesión de 1553 01:45:34,250 --> 01:45:37,029 elementos, pues, continua 1554 01:45:37,029 --> 01:45:39,130 ¿vale? que se puede detener el juego y se para ahí 1555 01:45:39,130 --> 01:45:40,909 y podemos ir fotograma a fotograma 1556 01:45:40,909 --> 01:45:42,369 ejecutándolo, ¿vale? 1557 01:45:43,789 --> 01:45:44,949 Hay una última cosa 1558 01:45:44,949 --> 01:45:47,430 muy importante que es 1559 01:45:47,430 --> 01:45:49,930 que cuando vayamos cambiando cosas en vivo 1560 01:45:49,930 --> 01:45:51,989 yo puedo decir, ay, yo arranco 1561 01:45:51,989 --> 01:45:53,569 el juego y se me ponen 1000 siempre 1562 01:45:53,569 --> 01:45:55,869 ¿vale? y aquí empiezo a guardar 1563 01:45:55,869 --> 01:45:57,829 y vais a ver que yo cuando detengo 1564 01:45:57,829 --> 01:45:59,729 el juego me vuelve al otro valor que estaba 1565 01:45:59,729 --> 01:46:01,470 guardando antes de empezar, ¿no? por ejemplo 1566 01:46:01,470 --> 01:46:03,930 500, ¿no? arranco el juego 1567 01:46:03,930 --> 01:46:05,869 se va a sobreescribir a 1000, que es lo que 1568 01:46:05,869 --> 01:46:07,869 hace al arrancar el juego y me pongo 1569 01:46:07,869 --> 01:46:09,909 a cambiar esto a 192 1570 01:46:09,909 --> 01:46:12,210 y por lo que sea yo quiero que en 192 1571 01:46:12,210 --> 01:46:13,189 se 1572 01:46:13,189 --> 01:46:28,970 Se deja aquí, digamos, sobrescrito el valor. Veréis que cuando yo detenga la ejecución del juego, vuelve a 500, que es el que yo había metido a mano. Esto significa que hay cambios que podemos ir haciendo en el... o más fácil, mirad, si me estoy yendo por las ramas. 1573 01:46:28,970 --> 01:46:32,109 tengo aquí colocada la nave y quiero que se mueva 1574 01:46:32,109 --> 01:46:34,970 y lo voy a ir cambiando en tiempo real en estas coordenadas 1575 01:46:34,970 --> 01:46:36,569 quiero cambiarlo en estas coordenadas 1576 01:46:36,569 --> 01:46:38,810 todos estos cambios que yo voy haciendo 1577 01:46:38,810 --> 01:46:44,069 imaginaos que yo hay un momento que voy a decir 1578 01:46:44,069 --> 01:46:46,649 quiero que la nave se quede aquí, que la haya ajustado 1579 01:46:46,649 --> 01:46:49,689 pero como estoy en ejecución, durante la ejecución 1580 01:46:49,689 --> 01:46:52,829 los cambios que vayamos haciendo solo funcionan durante la ejecución 1581 01:46:52,829 --> 01:46:57,109 cuando yo pare, vuelve a los valores que tenía antes de la ejecución 1582 01:46:57,109 --> 01:47:18,090 Por tanto, cambios que hagamos en vivo, que es el siguiente tema que vamos a hacer, cuidado que se hacen y no se guardan. Por eso veréis que cuando yo le doy al play se oscurece un poco el área, se oscurece un poco el entorno, indicando que estamos dentro de la ejecución y un poco advirtiendo que el cambio que hagamos en los parámetros no se guardan. 1583 01:47:18,090 --> 01:47:40,090 ¿Vale? Último consejo. Para cambiar este color y que sea aún más obvio cuándo podemos o no cambiar los elementos sin que se guarden, ¿vale? Dentro de Edits hay una pestaña de Preferencias. Creo que siempre confundo estas dos. En Preferencias, Edit Preferencias, están los colores del sistema. 1584 01:47:40,890 --> 01:47:46,770 Ya hay uno bastante interesante de modificar, que yo ya lo haría, 1585 01:47:46,869 --> 01:47:52,430 y esto se guarda siempre que no instaléis otra versión de Unity o vayáis a otro ordenador, etc. 1586 01:47:52,750 --> 01:47:56,890 Es decir, entre distintos juegos incluso que uséis la misma versión de Unity se va a mantener. 1587 01:47:57,510 --> 01:48:01,270 En vez de decirle que sea el tintado de este gris tan sutil que tenemos, 1588 01:48:01,409 --> 01:48:03,609 lo podemos exagerar a yo que sea un rojo de warning. 1589 01:48:04,529 --> 01:48:09,130 Cuando lo tengamos ahí configurado, el Play Mode Tint, el tinte de modo de juego, 1590 01:48:09,130 --> 01:48:12,750 ahora cuando ejecutemos el juego vais a ver que se tiñe de otro color 1591 01:48:12,750 --> 01:48:15,069 lo podéis poner más o menos llamativo 1592 01:48:15,069 --> 01:48:18,449 ahora todo cambio que vayamos haciendo mientras estemos en este modo 1593 01:48:18,449 --> 01:48:23,050 sabemos que cuando detengamos la ejecución del juego 1594 01:48:23,050 --> 01:48:25,069 placa, no ha servido para nada 1595 01:48:25,069 --> 01:48:27,869 excepto a lo mejor para tener clara la referencia 1596 01:48:27,869 --> 01:48:30,189 de donde queremos ubicar algo en este caso, etc. 1597 01:48:31,050 --> 01:48:33,010 entonces es importante que a lo mejor 1598 01:48:33,010 --> 01:48:36,510 cambiéis ya, en edit 1599 01:48:36,510 --> 01:48:38,750 Preferencias, este color 1600 01:48:38,750 --> 01:48:40,869 Ponerlo en algo intermedio 1601 01:48:40,869 --> 01:48:42,170 No tan rojo saturado 1602 01:48:42,170 --> 01:48:45,329 Porque al final este color se añade al que tiene ya la interfaz 1603 01:48:45,329 --> 01:48:46,970 Pues yo que sé, algo así rosadito 1604 01:48:46,970 --> 01:48:48,689 Y cuando le deis pues ya 1605 01:48:48,689 --> 01:48:50,329 Os marca que estáis como en 1606 01:48:50,329 --> 01:48:52,369 En momento warning