Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Curso Unity - Vídeo 4 - Script C# - 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:
Vale, ahora lo que vamos es con el tema del script, vale, vamos a asociarle un script a ese botón, entonces para hacer eso pues igual que antes me voy a crear una carpeta que la voy a llamar script y voy a ir ordenando de esa manera mi proyecto, vale, entonces tengo asset, vamos a crearnos una carpeta, botón derecho, folder y le llamamos script, vale, dentro de script, botón derecho, create,
00:00:01
y aquí vosotros en la versión 6 lo tenéis diferente, coger uno que está asociado al mono behavior, ¿vale?
00:00:32
Que es la clase de la que ha heredado siempre Unity, aunque ahora lo haya, lo esté modificando, ¿vale?
00:00:39
Entonces yo aquí le voy a dar a C script, Csat, ¿vale?
00:00:47
Pero vosotros acordaros de coger el que está asociado al mono behavior.
00:00:51
me muestra el ficherito del script y me dice
00:00:55
dale un nombre, pues vamos a ponerle
00:00:58
video
00:01:00
prueba
00:01:01
vale, importante
00:01:03
lo que os he dicho en clase, si le cambio
00:01:13
el nombre al fichero
00:01:15
cuando entráis dentro del script
00:01:16
también le tenéis que cambiar
00:01:18
el nombre a esa clase que nos está
00:01:20
creando, vale
00:01:23
y si lo cambio el nombre en la clase
00:01:24
también se lo tengo que cambiar al fichero
00:01:27
Están vinculados y eso es importante
00:01:29
¿Vale? Acordaros de eso
00:01:32
Vale, yo abro mi script
00:01:33
A ver...
00:01:35
Bueno, y me va a enseñar esto
00:01:44
Me va a enseñar que, por defecto, está usando
00:01:46
El System.Collection
00:01:49
El System.Collection.Generic
00:01:51
Y el UnityEngine
00:01:53
El motor de Unity
00:01:54
Me enseña la clase que me ha creado
00:01:55
Con el nombre del fichero
00:01:58
El nombre que le he dado, que ha sido videoprueba
00:02:00
Dos puntos
00:02:02
Hereda de MonoBehaviour
00:02:04
Y me crea dos métodos, el start y el update
00:02:06
Bueno, el start es como el constructor que conocéis de toda la vida
00:02:14
Y el update es un método que se está ejecutando por FPS
00:02:18
Aunque luego lo puedo hacer por tiempo
00:02:22
Entonces, bueno, esto no lo da por defecto
00:02:25
Hay diferentes métodos como el awake
00:02:30
que podemos utilizar y que los utilizaremos
00:02:33
vale, a la hora de asociar
00:02:38
un código a un
00:02:42
a un botón, vale
00:02:44
siempre tenéis que crear un método que sea público
00:02:47
que es el que luego voy a asociar al botón, si no es público, ese botón no lo va a ver
00:02:54
a la hora de asociarlo vais a ver que no lo ve
00:02:58
Vale, entonces recordad hacerlo público. Y a la hora de hacer el script tenéis que pensar si queréis trabajar con variables públicas o privadas. Ya sabéis que las públicas, pues en tema de seguridad no es nada seguro, ¿vale? Aunque podemos trabajar con variables privadas y luego simular de alguna manera que son públicas, ¿vale?
00:03:01
Entonces, esto es, yo tengo, por ejemplo, quiero ocultar, ¿vale?
00:03:25
Que es lo que hemos hecho en clase, ese panel.
00:03:31
Entonces voy a declarar una variable public, que la voy a llamar de tipo gain object, ¿vale?
00:03:33
Que le voy a llamar, os lo diré, mi panel, ¿vale?
00:03:41
Esto es muy cómodo, porque si yo lo guardo, vengo a mi editor de Unity,
00:03:48
me lo compila, ve que no hay ningún problema, yo asocio ahora este script a un GameObject, acordaros que siempre tiene que estar asociado el script a un GameObject, ¿vale? De alguna manera tiene que estar asociado, bueno, no siempre, pero ahora mismo para nosotros siempre, ¿vale?
00:03:55
Entonces, yo voy a crear un entity, un entity no es nada, es un punto en el espacio, entonces, me es muy cómodo, veis que solo tiene el transform, porque no hay nada, o sea, y el transform es una tontería, bueno, puedo cambiar la posición, pero ni la rotación, ni la escala, porque es un punto.
00:04:18
Entonces, tengo el GainObject, cojo el script, lo arrastro y lo suelto
00:04:33
¿Vale? Y fijaros como al declarar esta variable public GainObject, mi panel
00:04:38
Esto lo que me hace es que me va a crear esta entrada en mi script
00:04:45
¿Veis? Pone mi panel, porque Unity, el mi y luego la p
00:04:50
O sea, cuando metéis las mayúsculas, mete esa separación, ¿vale?
00:04:55
Lo entiende, lo interpreta
00:04:59
Y se queda esperando un GainObject
00:05:00
El GameObject, si yo por ejemplo quisiera meter todo el panel, el GameObject va a tener todas las propiedades que están en la ventana, todos los componentes, mejor dicho, que están en la ventana inspector, ¿vale? Y eso puede ser mucha información, tener en cuenta que un motor de videojuegos al final está trabajando con varios GameObject y que los tenéis todos cargados, entonces hay que andarse con mucho ojo, ¿vale?
00:05:03
Entonces, yo puedo meter este panel con todo lo que es el gain object o a lo mejor solo la parte, un componente que es el image, porque yo, por ejemplo, voy a trabajar con el image, imaginaros.
00:05:31
Entonces, en el script lo que voy a hacer es, en vez de declararlo de tipo gain object, voy a meter y voy a decirle que sea de tipo image y le voy a llamar mi panel componente, ¿vale? Punto y coma.
00:05:44
este image no me lo está reconociendo
00:06:08
¿por qué? porque tengo que
00:06:12
cargarle el using
00:06:13
unity
00:06:15
engine.ui
00:06:17
¿vale?
00:06:19
en el momento en el que le ponéis el .ui
00:06:21
ya empieza a reconocer
00:06:24
vale, esto que es lo que ha hecho
00:06:25
si me vengo otra vez al editor
00:06:28
veo que
00:06:30
me lo ha compilado
00:06:33
no me da ningún error
00:06:36
¿Vale? Que os saldría aquí una línea en rojo
00:06:37
Y si ahora veo mi script
00:06:39
Veo que tengo mi panel
00:06:41
Que es de tipo GainObject
00:06:42
Y otra variable pública que es mi panel componente
00:06:44
De tipo Image
00:06:47
¿Vale?
00:06:49
Si no lo hiciera así
00:06:51
Podría hacerlo también cogiendo
00:06:52
Metiendo un tag
00:06:55
Por ejemplo
00:06:57
Podemos coger en panel
00:06:58
El tag es la etiqueta
00:07:01
¿Vale? Que siempre aparece en los GainObject
00:07:02
Y podemos añadir un tag
00:07:05
Entonces aquí le voy a dar al más, le voy a poner mi panel, ¿vale? Por ejemplo, vuelvo a seleccionar el panel y lo etiqueto con la que acabo de crear, mi panel, ¿vale?
00:07:07
Eso me permite, desde el código, por ejemplo, en el start decir, a ver, tengo una variable que se va a llamar, vamos a ver, tipo gainObject, que la vamos a llamar miPanel2.
00:07:21
Y esto va a ser igual a gainObject.findGainObjectWithTag, por ejemplo, ¿vale? Fijaros que hay dos, uno me va a coger todos los objetos que os pone con object con ese tag y otro solo va a coger el primero que encuentre, que es lo que yo quiero.
00:07:42
Vale, entonces le digo, encuéntrame un objeto cuyo nombre es, le hemos puesto mi tag, mi panel me parece, ¿no? Vale, entonces esto me lo va a encontrar, ¿vale? A ver que no me acuerdo como le hemos taggeado, mi panel, sí.
00:08:06
Esto lo va a coger
00:08:24
Es lo mismo que estáis haciendo cuando arrastráis
00:08:27
¿Vale?
00:08:29
Y por ejemplo aquí podría decirle ahora
00:08:30
Pues mi panel
00:08:33
2.setActive
00:08:34
Igual a falso
00:08:38
¿Vale?
00:08:39
SetActive
00:08:43
Igual a falso
00:08:43
¿Qué va a hacer esto?
00:08:44
Me va a coger el gainObject
00:08:47
Lo va a meter en mi panel y mi panel lo va a desactivar
00:08:49
Y como está en el start es como un constructor
00:08:51
vamos a ver si nos lo hace, vale, entonces me vuelvo a mi editor, me lo está compilando, no me ha dado ningún problema, ejecuto y veis como ha cogido ese panel y lo ha escondido, vale, eso es la forma de trabajar sin utilizar variables públicas,
00:08:54
Que yo quiero ahora, por ejemplo, como hemos hecho aquí abajo, coger ese componente image del panel. Podría poner aquí, por ejemplo, mi panel 2.getComponent, ¿vale? Le digo el componente que quiero coger, que es image, le pongo paréntesis, paréntesis, punto, y vamos a ponerle, por ejemplo, lo que nos está diciendo, el enable igual a falso, ¿vale?
00:09:17
Enable igual a falso
00:09:44
Y esto pues lo voy a comentar
00:09:48
Entonces
00:09:50
Si lanzamos esto
00:09:52
Bueno, lo guardo
00:09:54
Nos lo compila Unity
00:09:56
Expectante
00:09:58
En el 22
00:10:02
A ver, que he hecho yo mal aquí
00:10:04
Esto no sé
00:10:06
Que es esto
00:10:09
En el 22
00:10:10
public class
00:10:13
ah, vale
00:10:20
vamos a ponerle aquí la llave que nos falta
00:10:22
ya está
00:10:27
guardamos, compilamos
00:10:28
y volvemos al editor
00:10:30
vale, nos lo compila
00:10:31
ya no nos da ningún error
00:10:34
le doy al play
00:10:35
vale, y entonces, ¿qué es lo que ha pasado?
00:10:38
vamos a verlo mejor así
00:10:41
en vez de play
00:10:42
maximizado, le vamos a decir
00:10:45
vale, que es lo que ha hecho
00:10:47
ahora mismo nuestro programa
00:10:50
bueno, ha cogido
00:10:52
ha cogido el componente
00:10:54
panel, vale
00:10:56
y ha deshabilitado
00:10:57
esta parte del image
00:11:00
veis que ya no está chequeado
00:11:02
eso es lo que he hecho cuando he cogido
00:11:04
el componente image
00:11:06
y lo he deshabilitado
00:11:07
vale, entonces fijaros que si lo habilito
00:11:10
lo vuelvo a ver igual que antes, pero ahora
00:11:12
desde el código lo he deshabilitado. Entonces, son dos formas de trabajar, ¿vale? Vale, esto os lo voy a dejar aquí comentado y voy a ir trabajando con las funciones públicas
00:11:14
que creo son más fáciles ahora mismo para vosotros, ¿vale? Entonces, voy a crearme un, perdón, las funciones, las variables públicas que son más fáciles para vosotros.
00:11:30
Vamos a crearnos un método público que le voy a llamar botón pulsado, ¿vale?
00:11:42
Estos botones pueden recibir, como siempre, estos botones, estos parámetros pueden recibir, estos métodos pueden recibir parámetros de entrada, ¿vale?
00:11:57
Que por ahora no los estoy usando, pero obviamente, como vosotros ya lo habéis hecho, le podemos pasar toda la información que queramos, ¿vale?
00:12:08
Bueno, yo tengo ese botón, ese método de botón pulsado, y aquí le voy a decir, por ejemplo, ahora que me haga un debug log, para que me muestre el hola mundo, ¿vale?
00:12:19
Y entonces, fijaros que lo pongo en público, mostramos un texto tonto, ¿vale? Lo guardo, volvemos al editor, nos lo compila, no nos da ningún problema, vuelvo al botón, me vengo al componente button y aquí juego con esta parte del onclick.
00:12:35
Aquí le voy a dar al más y me va a pedir o me muestra estos parámetros.
00:12:59
El primero es si solo quiero que funcione el botón cuando está en modo edición o cuando está también arrancado y o cuando está arrancado, ¿vale?
00:13:05
Cuando está en ejecución mi proyecto.
00:13:13
Lo segundo que me pide es ese GameObject en el que tengo asociado ese script, ¿vale?
00:13:15
Que en nuestro caso es este GameObject, era este Entity.
00:13:20
Entonces yo cojo, lo arrastro y lo suelto aquí, ¿vale?
00:13:23
Una vez que lo suelto aquí, el gain object, no el script, ¿vale? Que eso lo haremos todos más de una vez. Bueno, una vez que tengo aquí el gain object, si despliego donde pone no function, aquí tengo un gain object que es el propio gain object en el que está ese script, ¿vale?
00:13:26
Y me permite ya directamente hacer estas modificaciones en el transform en el que me permite hacer, utilizar estos métodos, ¿vale?
00:13:46
Y mi script que es videoprueba y dentro de videoprueba, ¿veis? Yo tengo botón pulsado que es la función que acabo de hacer.
00:13:56
Si yo no hubiera puesto aquí el public, si en el public lo guardo, esto no me da ningún error, como no puede ser de otra manera.
00:14:05
¿Vale? No me da ningún error
00:14:24
Pero si ahora vengo al botón
00:14:27
Tengo asociado el green object
00:14:29
Me vengo a mi script
00:14:32
Ya esa opción de
00:14:34
Mostrar botón o botón prueba
00:14:36
O como le haya llamado
00:14:38
Ya no me aparece aquí
00:14:39
Porque no está como pública
00:14:41
Entonces es muy importante que la pongáis siempre como pública
00:14:43
¿Vale?
00:14:46
Entonces vamos a volver a ponerlo como público
00:14:47
Y ya estaría
00:14:50
Lo guardo, nos volvemos a Unity y le digo, ¿dónde estás? Aquí, el GameNorjet, video prueba, botón pulsado.
00:14:57
Vale, lo ejecutamos, lo lanzamos y ahora cuando pulso en el clic, ya me sale el hola mundo, un debug log que me saca por consola el hola mundo.
00:15:15
Vale, entonces nos está funcionando perfectamente.
00:15:29
Yo lo que quiero es desactivar la imagen del botón, por ejemplo.
00:15:35
¿Vale? Entonces, como hemos metido en el código esta variable pública de tipo image
00:15:42
Vamos a meter ahí ese botón y lo vamos a desactivar
00:15:47
Entonces vamos a meter aquí, por ejemplo, que cuando pulse el botón
00:15:50
Además de decir la tontería del hola mundo
00:15:55
Vamos a poner mi panel componente
00:15:57
A ver, mi panel componente
00:16:04
Punto enable
00:16:06
igual
00:16:10
falso
00:16:12
vale
00:16:14
mi panel componente
00:16:18
punto
00:16:22
enable igual a falso
00:16:24
vale
00:16:26
vamos a guardarlo
00:16:29
vámonos a unity
00:16:32
y ahora lo que voy a hacer es
00:16:36
en el script
00:16:38
voy a asociar
00:16:39
Ese, mi panel componente
00:16:41
Que es el que estoy utilizando
00:16:44
Ese hemos dicho que es el del botón
00:16:45
¿Vale? Entonces voy a coger el botón
00:16:47
Lo voy a soltar aquí
00:16:50
¿Veis? Y ahora me coge
00:16:52
Este, aunque me ponga aquí el botón
00:16:54
Si os fijáis en el logo
00:16:55
No es el cubo
00:16:57
Que es el del GameObject, ¿no?
00:16:59
Es solo el del componente Image
00:17:01
Entonces si
00:17:02
Yo le doy ahora, lanzamos la ejecución
00:17:04
Si pulso encima del botón
00:17:08
ahí no lo he lanzado
00:17:10
a ver, vale, si pulso
00:17:13
encima del botón, veis me
00:17:18
desactiva ese componente image
00:17:20
pero
00:17:22
vamos a ver
00:17:24
si lo paramos
00:17:27
vale, bueno, aquí igual
00:17:32
que antes y si fuerais al
00:17:34
botón veríais que
00:17:36
vamos a ver
00:17:37
vamos a lanzarlo
00:17:39
estoy en el
00:17:41
componente button y ahora cuando yo pulso
00:17:44
veréis que este check que acompaña al componente se desactiva, ¿vale?
00:17:46
Que es lo que le he dicho, ¿vale? Ya estaría, ¿vale?
00:17:50
Entonces, esta es la diferencia entre trabajar con variables públicas o directamente con el código, ¿vale?
00:17:53
En principio lo correcto es directamente trabajar sobre, o sea, no utilizar variables públicas, ¿vale?
00:18:05
También es la idea de trabajar con métodos públicos para poder asociarlos en este caso a los botones, ¿vale? Y jugar con el habilitar y el deshabilitar, que quiero deshabilitar el panel, pues entonces le pone, pues tal cual, mi panel set active falso, ¿vale?
00:18:13
Y esto lo que nos va a hacer es que cuando pulso el botón, además de Hola Mundo y de deshabilitar la imagen del botón, también va a deshabilitar el panel.
00:18:33
Vale, entonces, le doy al botón, ah, perdón, claro, lo que me está diciendo es que no se lo he asignado, no le he asignado qué objeto quiero deshabilitar.
00:18:47
Entonces le vamos a pasar directamente todo el paquete
00:19:00
¿Vale?
00:19:03
Y ahora ya sí
00:19:04
Vale, le doy al botón y entonces lo deshabilito todo
00:19:05
Me pone el hola mundo
00:19:12
¿Vale? Si voy al botón
00:19:13
Veis que el email también lo tengo deshabilitado
00:19:16
¿Vale? Como no puede ser de otra manera
00:19:19
Bueno, pues esto es un poco el tema del botón
00:19:22
De los scripts
00:19:25
Y ahora ya os creo
00:19:26
Ya mañana otros vídeos con el tema de
00:19:29
el sonido, las escenas
00:19:33
todo esto, un saludo chicos
00:19:37
hasta luego
00:19:38
- Idioma/s:
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Autor/es:
- Mario S.
- Subido por:
- Mario S.
- Licencia:
- Dominio público
- Visualizaciones:
- 19
- Fecha:
- 3 de diciembre de 2024 - 11:28
- Visibilidad:
- Público
- Centro:
- IES VILLABLANCA
- Duración:
- 00′ 07″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 57.70 MBytes