Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Primeros pasos en Unity. Arrays (parte 2) - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 2 de octubre de 2024 por Alvaro H.

38 visualizaciones

Veamos cómo usar los arrays, por ejemplo para instanciar elementos en la escena

Descargar la transcripción

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:
es
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid