1 00:00:06,190 --> 00:00:10,230 Bien, vamos a ir un pasito más allá y es que Unity lógicamente no sólo tiene 2 00:00:10,230 --> 00:00:14,070 variables de tipo cadena, enteros o booleanos, no, no, es que tiene variables 3 00:00:14,070 --> 00:00:17,050 de tipo por ejemplo GameObject, con lo cual ya las posibilidades que nos abren 4 00:00:17,050 --> 00:00:22,129 a la hora de plantear Arrays son mucho mayores. Vamos a por ejemplo crear un 5 00:00:22,129 --> 00:00:26,530 Array de GameObjects, lo llenaremos de GameObjects y haremos cosas con ellos 6 00:00:26,530 --> 00:00:30,750 como por ejemplo instanciarlos. Para eso voy a utilizar un elemento que me he 7 00:00:30,750 --> 00:00:35,310 descargado de GameAssets que es una partida de ajedrez, así que me voy a ir a 8 00:00:35,310 --> 00:00:42,270 los prefabs que me he descargado para que sea más bonito pues voy a sacar el tablero a escena 9 00:00:42,270 --> 00:00:50,689 y si nos fijamos tengo una serie de prefabs con las piezas de un ajedrez voy a partir de cero 10 00:00:50,689 --> 00:00:56,250 voy a crear un nuevo array voy a crear un array para las mis líneas de mis de mis piezas entonces 11 00:00:56,250 --> 00:01:05,150 igual que hemos hecho antes de tipo y aquí viene el interesante game object y muy importante le 12 00:01:05,150 --> 00:01:10,590 ponemos los corchetes para indicar que es un array. Le voy a llamar piezas 13 00:01:10,590 --> 00:01:15,010 y como yo sé el número de piezas que necesito se las voy a dar ya. Podría 14 00:01:15,010 --> 00:01:19,370 hacerlo luego pero ya que estamos... esto es un nuevo 15 00:01:19,370 --> 00:01:26,250 array de tipo GameObject de número de elementos 8. Me vuelvo a Unity 16 00:01:26,250 --> 00:01:30,269 y efectivamente me encuentro la variable piezas que es un array de tipo GameObject 17 00:01:30,269 --> 00:01:34,870 con 8 elementos que están esperando que yo les dé los elementos. Pues se los voy 18 00:01:34,870 --> 00:01:38,670 a dar además en el orden en el que van en el tablero, concretamente de los blancos. 19 00:01:45,269 --> 00:01:52,349 Muy bien, pues ya tengo un array que contiene 8 GameObjects aquí. Voy a instanciarlos. 20 00:01:53,010 --> 00:02:06,170 De momento lo voy a hacer a las bravas, igual que hemos hecho antes. Le he dicho que se 21 00:02:06,170 --> 00:02:10,110 haga un bucle que haga tantos ciclos como elementos tiene el array. ¿Y qué es lo que 22 00:02:10,110 --> 00:02:25,000 voy a hacer? Pues en cada ciclo instanciar. ¿El qué? Su elemento del array. Fijémonos que yo aquí 23 00:02:25,000 --> 00:02:29,419 le estoy dando un GameObject porque instanciar nos permite instanciar GameObjects y eso es un 24 00:02:29,419 --> 00:02:38,300 GameObject. ¿Cuál? Pues en cada ciclo será uno distinto. Vamos a comprobarlo y efectivamente 25 00:02:38,300 --> 00:02:43,840 ahí están todos mis elementos. ¿Qué ocurre? Pues nada, que los ha instanciado en las coordenadas 26 00:02:43,840 --> 00:02:49,159 0,0. Voy a decirle, esto es un repaso de clases anteriores, así que lo voy a 27 00:02:49,159 --> 00:02:51,840 hacer muy rápido. Voy a crear una posición en mi espacio mediante un 28 00:02:51,840 --> 00:02:55,680 vector 3, eso ya sabemos hacerlo, y le voy a decir que en cada ciclo se mueva 29 00:02:55,680 --> 00:02:59,240 X elementos hacia la derecha y así instanciaremos todos nuestros elementos 30 00:02:59,240 --> 00:03:03,319 como debe ser un tablero de ajedrez. Lo voy a hacer rapidito. Le he creado un 31 00:03:03,319 --> 00:03:06,560 vector 3 que va a indicar la posición inicial en que se va a instanciar, 32 00:03:06,800 --> 00:03:15,979 entonces en este instanciador le voy a decir que lo ubique en la posición 33 00:03:15,979 --> 00:03:26,340 inicial. Si es verdad que nos pide una rotación también, le voy a decir sin rotación y le 34 00:03:26,340 --> 00:03:34,199 voy a decir que en cada ciclo de ese array a mi posición le sume, recordemos que para 35 00:03:34,199 --> 00:03:43,020 sumar a sí mismo le vale esto y como ya sabemos los vectores se pueden sumar. Le voy a decir 36 00:03:43,020 --> 00:03:50,460 que se desplace 6 hacia X. Como yo sé que mis prefabs están girados, pues nada, en 37 00:03:50,460 --> 00:03:55,180 vez de darle quaternion identity, que lo modelamos hasta ahora, que es sin giro, pues aquí sí 38 00:03:55,180 --> 00:03:59,020 le tengo que dar un giro para que se giren hacia arriba y miren al frente, porque si 39 00:03:59,020 --> 00:04:03,539 no, bueno, mis prefabs venían así, venían tumbados. Así que nada, les tengo que decir 40 00:04:03,539 --> 00:04:08,520 que se instancien en la posición donde yo le digo que se instancien y girados hacia 41 00:04:08,520 --> 00:04:15,280 arriba y hacia el frente en este caso pues utilizando los elementos de giro euler vamos 42 00:04:15,280 --> 00:04:22,620 a ver ahora ahí está en el orden correcto bien las posibilidades son muchas de hecho dejo para 43 00:04:22,620 --> 00:04:28,600 otro vídeo otros elementos como por ejemplo unity nos permite preguntarle a la escena cuántos 44 00:04:28,600 --> 00:04:34,639 elementos hay en una con un tag concreto o de un tipo concreto y lo que nos devuelve unity que es 45 00:04:34,639 --> 00:04:36,439 un array y a partir de ese momento 46 00:04:36,439 --> 00:04:38,259 podemos bucear por el array 47 00:04:38,259 --> 00:04:40,540 es más, los arrays hemos visto como hacer un bucle 48 00:04:40,540 --> 00:04:42,680 con for, pero hay otra forma 49 00:04:42,680 --> 00:04:44,699 mucho más elegante o mucho más 50 00:04:44,699 --> 00:04:45,899 efectiva que es el forEach 51 00:04:45,899 --> 00:04:47,959 y nos permite en cada ciclo 52 00:04:47,959 --> 00:04:50,560 tener el elemento del array 53 00:04:50,560 --> 00:04:52,620 como si fuese un elemento con el que 54 00:04:52,620 --> 00:04:54,639 poder jugar, por ejemplo si es un GameObject 55 00:04:54,639 --> 00:04:56,259 pues podemos hacer lo que queramos con el GameObject 56 00:04:56,259 --> 00:04:57,980 moverlo, desplazarlo, destruirlo, en fin 57 00:04:57,980 --> 00:05:00,439 pero ya que estamos aquí y ya que tenemos un array 58 00:05:00,439 --> 00:05:02,439 de GameObjects e incluso 59 00:05:02,439 --> 00:05:05,019 conocemos la longitud del array 60 00:05:05,019 --> 00:05:06,519 pues nada nos impide, por ejemplo 61 00:05:06,519 --> 00:05:08,779 decirle, le voy a decir 62 00:05:08,779 --> 00:05:10,500 que me ponga 8 elementos aquí 63 00:05:10,500 --> 00:05:12,959 igual que he hecho ahora, pero que me los ponga aleatoriamente 64 00:05:12,959 --> 00:05:14,819 no tiene sentido en un 65 00:05:14,819 --> 00:05:16,839 juego de ajedrez, pero imaginemos 66 00:05:16,839 --> 00:05:18,819 las posibilidades que nos brinda eso 67 00:05:18,819 --> 00:05:20,779 de hecho, si nos fijamos aquí 68 00:05:20,779 --> 00:05:22,860 donde he dicho, hazme un 69 00:05:22,860 --> 00:05:25,120 bucle por todos los elementos que hay en el array 70 00:05:25,120 --> 00:05:26,720 y aquí yo le he dicho 71 00:05:26,720 --> 00:05:29,000 que me muestre el array n, que se corresponde 72 00:05:29,000 --> 00:05:30,779 con el momento 73 00:05:30,779 --> 00:05:37,240 del ciclo, el ciclo que estoy ejecutando. Pero ¿y si yo creo una nueva variable de 74 00:05:37,240 --> 00:05:48,560 tipo integrir? Le voy a llamar r y va a ser un número random. Y además el random range, 75 00:05:49,699 --> 00:05:58,939 si nos acordamos, nos pedía entre el número inicial y el número máximo. ¿Y cuál es 76 00:05:58,939 --> 00:06:04,040 el número máximo dentro de mi rango de random? Pues efectivamente el número de elementos 77 00:06:04,040 --> 00:06:09,379 que tiene mi array. Perdón, me está avisando que esto estaba obsoleto. Efectivamente se 78 00:06:09,379 --> 00:06:15,779 usa random range. Y además aquí hay que ser muy precisos. Tiene que usar un número 79 00:06:15,779 --> 00:06:22,040 aleatorio entre 0 incluyendo 0. ¿Y cuántos elementos tengo? Pues en este caso 8. ¿Y 80 00:06:22,040 --> 00:06:25,660 ¿Cuál es el máximo número que debe incluir en ese random? 81 00:06:25,819 --> 00:06:26,300 El 7. 82 00:06:27,639 --> 00:06:30,379 Recordemos, si tengo 8 elementos en mi array, 83 00:06:31,319 --> 00:06:35,459 tiene que elegir entre 0, 1, 2, 3, 4, 5, 6 y 7. 84 00:06:36,459 --> 00:06:37,959 Ahí ya Unity nos lo da hecho, 85 00:06:38,060 --> 00:06:39,899 porque cuando le damos un número entero aquí, 86 00:06:41,339 --> 00:06:43,899 él excluye el número entero que le hemos dado. 87 00:06:43,899 --> 00:06:45,120 Ahora entendemos por qué lo hacía. 88 00:06:45,500 --> 00:06:47,600 Así que esto está correcto, no va a salir el 8, 89 00:06:48,019 --> 00:06:49,000 aunque tenga 8 elementos. 90 00:06:49,079 --> 00:06:49,879 El 8 está excluido. 91 00:06:49,879 --> 00:06:53,139 así que le voy a decir que me ponga las piezas 92 00:06:53,139 --> 00:06:54,839 pero no la pieza que le toca, no, no 93 00:06:54,839 --> 00:06:56,120 la aleatoria 94 00:06:56,120 --> 00:06:58,699 es decir, la R 95 00:06:58,699 --> 00:07:00,819 y lo hará 8 veces porque el ciclo 96 00:07:00,819 --> 00:07:03,319 se repite tantas veces como elementos tiene el array 97 00:07:03,319 --> 00:07:04,680 vamos a ver que ha ocurrido 98 00:07:04,680 --> 00:07:06,899 todo funciona igual 99 00:07:06,899 --> 00:07:09,040 solo que los elementos 100 00:07:09,040 --> 00:07:11,040 que aparecen aquí son aleatorios 101 00:07:11,040 --> 00:07:13,139 voy a darle al play 102 00:07:13,139 --> 00:07:15,279 para que veamos que efectivamente se me vuelven a colocar 103 00:07:15,279 --> 00:07:17,860 aleatoriamente 104 00:07:17,860 --> 00:07:34,699 En fin, las posibilidades son infinitas pero es muy importante que aprendamos a manejarnos dentro de los Arrays porque lo vamos a empezar a usar más a menudo a partir de ahora y de hecho ya casi si tenemos imaginación hasta se nos pueden ocurrir formas en las que podemos integrarlo en los ejercicios que estamos haciendo en clase.