Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Primeros pasos en Unity. Arrays (parte 2) - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Veamos cómo usar los arrays, por ejemplo para instanciar elementos en la escena
Bien, vamos a ir un pasito más allá y es que Unity lógicamente no sólo tiene
00:00:06
variables de tipo cadena, enteros o booleanos, no, no, es que tiene variables
00:00:10
de tipo por ejemplo GameObject, con lo cual ya las posibilidades que nos abren
00:00:14
a la hora de plantear Arrays son mucho mayores. Vamos a por ejemplo crear un
00:00:17
Array de GameObjects, lo llenaremos de GameObjects y haremos cosas con ellos
00:00:22
como por ejemplo instanciarlos. Para eso voy a utilizar un elemento que me he
00:00:26
descargado de GameAssets que es una partida de ajedrez, así que me voy a ir a
00:00:30
los prefabs que me he descargado para que sea más bonito pues voy a sacar el tablero a escena
00:00:35
y si nos fijamos tengo una serie de prefabs con las piezas de un ajedrez voy a partir de cero
00:00:42
voy a crear un nuevo array voy a crear un array para las mis líneas de mis de mis piezas entonces
00:00:50
igual que hemos hecho antes de tipo y aquí viene el interesante game object y muy importante le
00:00:56
ponemos los corchetes para indicar que es un array. Le voy a llamar piezas
00:01:05
y como yo sé el número de piezas que necesito se las voy a dar ya. Podría
00:01:10
hacerlo luego pero ya que estamos... esto es un nuevo
00:01:15
array de tipo GameObject de número de elementos 8. Me vuelvo a Unity
00:01:19
y efectivamente me encuentro la variable piezas que es un array de tipo GameObject
00:01:26
con 8 elementos que están esperando que yo les dé los elementos. Pues se los voy
00:01:30
a dar además en el orden en el que van en el tablero, concretamente de los blancos.
00:01:34
Muy bien, pues ya tengo un array que contiene 8 GameObjects aquí. Voy a instanciarlos.
00:01:45
De momento lo voy a hacer a las bravas, igual que hemos hecho antes. Le he dicho que se
00:01:53
haga un bucle que haga tantos ciclos como elementos tiene el array. ¿Y qué es lo que
00:02:06
voy a hacer? Pues en cada ciclo instanciar. ¿El qué? Su elemento del array. Fijémonos que yo aquí
00:02:10
le estoy dando un GameObject porque instanciar nos permite instanciar GameObjects y eso es un
00:02:25
GameObject. ¿Cuál? Pues en cada ciclo será uno distinto. Vamos a comprobarlo y efectivamente
00:02:29
ahí están todos mis elementos. ¿Qué ocurre? Pues nada, que los ha instanciado en las coordenadas
00:02:38
0,0. Voy a decirle, esto es un repaso de clases anteriores, así que lo voy a
00:02:43
hacer muy rápido. Voy a crear una posición en mi espacio mediante un
00:02:49
vector 3, eso ya sabemos hacerlo, y le voy a decir que en cada ciclo se mueva
00:02:51
X elementos hacia la derecha y así instanciaremos todos nuestros elementos
00:02:55
como debe ser un tablero de ajedrez. Lo voy a hacer rapidito. Le he creado un
00:02:59
vector 3 que va a indicar la posición inicial en que se va a instanciar,
00:03:03
entonces en este instanciador le voy a decir que lo ubique en la posición
00:03:06
inicial. Si es verdad que nos pide una rotación también, le voy a decir sin rotación y le
00:03:15
voy a decir que en cada ciclo de ese array a mi posición le sume, recordemos que para
00:03:26
sumar a sí mismo le vale esto y como ya sabemos los vectores se pueden sumar. Le voy a decir
00:03:34
que se desplace 6 hacia X. Como yo sé que mis prefabs están girados, pues nada, en
00:03:43
vez de darle quaternion identity, que lo modelamos hasta ahora, que es sin giro, pues aquí sí
00:03:50
le tengo que dar un giro para que se giren hacia arriba y miren al frente, porque si
00:03:55
no, bueno, mis prefabs venían así, venían tumbados. Así que nada, les tengo que decir
00:03:59
que se instancien en la posición donde yo le digo que se instancien y girados hacia
00:04:03
arriba y hacia el frente en este caso pues utilizando los elementos de giro euler vamos
00:04:08
a ver ahora ahí está en el orden correcto bien las posibilidades son muchas de hecho dejo para
00:04:15
otro vídeo otros elementos como por ejemplo unity nos permite preguntarle a la escena cuántos
00:04:22
elementos hay en una con un tag concreto o de un tipo concreto y lo que nos devuelve unity que es
00:04:28
un array y a partir de ese momento
00:04:34
podemos bucear por el array
00:04:36
es más, los arrays hemos visto como hacer un bucle
00:04:38
con for, pero hay otra forma
00:04:40
mucho más elegante o mucho más
00:04:42
efectiva que es el forEach
00:04:44
y nos permite en cada ciclo
00:04:45
tener el elemento del array
00:04:47
como si fuese un elemento con el que
00:04:50
poder jugar, por ejemplo si es un GameObject
00:04:52
pues podemos hacer lo que queramos con el GameObject
00:04:54
moverlo, desplazarlo, destruirlo, en fin
00:04:56
pero ya que estamos aquí y ya que tenemos un array
00:04:57
de GameObjects e incluso
00:05:00
conocemos la longitud del array
00:05:02
pues nada nos impide, por ejemplo
00:05:05
decirle, le voy a decir
00:05:06
que me ponga 8 elementos aquí
00:05:08
igual que he hecho ahora, pero que me los ponga aleatoriamente
00:05:10
no tiene sentido en un
00:05:12
juego de ajedrez, pero imaginemos
00:05:14
las posibilidades que nos brinda eso
00:05:16
de hecho, si nos fijamos aquí
00:05:18
donde he dicho, hazme un
00:05:20
bucle por todos los elementos que hay en el array
00:05:22
y aquí yo le he dicho
00:05:25
que me muestre el array n, que se corresponde
00:05:26
con el momento
00:05:29
del ciclo, el ciclo que estoy ejecutando. Pero ¿y si yo creo una nueva variable de
00:05:30
tipo integrir? Le voy a llamar r y va a ser un número random. Y además el random range,
00:05:37
si nos acordamos, nos pedía entre el número inicial y el número máximo. ¿Y cuál es
00:05:49
el número máximo dentro de mi rango de random? Pues efectivamente el número de elementos
00:05:58
que tiene mi array. Perdón, me está avisando que esto estaba obsoleto. Efectivamente se
00:06:04
usa random range. Y además aquí hay que ser muy precisos. Tiene que usar un número
00:06:09
aleatorio entre 0 incluyendo 0. ¿Y cuántos elementos tengo? Pues en este caso 8. ¿Y
00:06:15
¿Cuál es el máximo número que debe incluir en ese random?
00:06:22
El 7.
00:06:25
Recordemos, si tengo 8 elementos en mi array,
00:06:27
tiene que elegir entre 0, 1, 2, 3, 4, 5, 6 y 7.
00:06:31
Ahí ya Unity nos lo da hecho,
00:06:36
porque cuando le damos un número entero aquí,
00:06:38
él excluye el número entero que le hemos dado.
00:06:41
Ahora entendemos por qué lo hacía.
00:06:43
Así que esto está correcto, no va a salir el 8,
00:06:45
aunque tenga 8 elementos.
00:06:48
El 8 está excluido.
00:06:49
así que le voy a decir que me ponga las piezas
00:06:49
pero no la pieza que le toca, no, no
00:06:53
la aleatoria
00:06:54
es decir, la R
00:06:56
y lo hará 8 veces porque el ciclo
00:06:58
se repite tantas veces como elementos tiene el array
00:07:00
vamos a ver que ha ocurrido
00:07:03
todo funciona igual
00:07:04
solo que los elementos
00:07:06
que aparecen aquí son aleatorios
00:07:09
voy a darle al play
00:07:11
para que veamos que efectivamente se me vuelven a colocar
00:07:13
aleatoriamente
00:07:15
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.
00:07:17
- Idioma/s:
- Autor/es:
- Álvaro Holguera
- Subido por:
- Alvaro H.
- Licencia:
- Reconocimiento - No comercial - Sin obra derivada
- Visualizaciones:
- 38
- Fecha:
- 2 de octubre de 2024 - 17:27
- Visibilidad:
- Público
- Centro:
- CFP JOSÉ LUIS GARCI
- Duración:
- 07′ 35″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 140.79 MBytes