‫Oye, bienvenido de nuevo.
‫En el último video, aprendimos algunos nuevos especificadores de propiedades que nos permiten exponer nuestras variables de C++ de ciertas
‫maneras en el panel de detalles de los blueprints.
‫En este video, aprenderemos algunos especificadores más que nos permiten tener más control sobre el acceso
‫a esas variables.
‫En el panel de detalles, también hablaremos sobre cómo podemos permitir el acceso de lectura o escritura en el
‫gráfico de eventos real para una variable de C++ en particular.
‫Así que vamos a sumergirnos.
‫Bueno.
‫Así que estoy de vuelta aquí en código VS y aquí están las variables que creamos en el último video.
‫Ahora aquí está mi variable de velocidad.
‫Esto fue para el desafío.
‫Probablemente creó una variable diferente, lo cual está totalmente bien, así que mantenga esa variable allí.
‫Vamos a hacer algunas cosas más con él en este video.
‫Ahora hemos aprendido que podemos hacer que una variable sea visible en cualquier lugar, y cuando decimos en cualquier lugar, nos
‫referimos al panel de detalles, ya sea en una instancia o en el plano predeterminado.
‫Vimos que también podemos hacer que se edite en cualquier lugar, y cuando usamos solo una instancia visible, solo es visible en
‫una instancia.
‫Ni siquiera puede verlo en el plano predeterminado y, en cualquier caso, no puede editarlo porque está
‫atenuado.
‫Esto nos permite hacer que nuestra variable sea visible solo en la instancia.
‫Pero, ¿qué sucede si deseamos que sea visible solo en el plano predeterminado?
‫Bueno, también hay especificaciones para eso.
‫Hagamos otro en 32 y llamemos a esto valores predeterminados visibles solo int.
‫Y podemos inicializar esto a un valor.
‫Le daré cinco y también le daremos una propiedad U.
‫Y las especificaciones son para hacer que esto sea visible solo en los valores predeterminados.
‫Probablemente puedas adivinar qué es.
‫Solo son valores predeterminados visibles.
‫Así que voy a compilar esto y de vuelta aquí en el editor, voy a abrir BP Pond Tank nuevamente.
‫Y con BP Pond Tank autoseleccionado, todas nuestras variables están aquí en la parte superior, así que no
‫voy a buscarlas.
‫Pero aquí están nuestros valores predeterminados visibles solo int y tiene el valor cinco y, por supuesto, ahora está atenuado como sugiere
‫el nombre, es visible solo en el valor predeterminado.
‫Entonces, si voy al mundo y selecciono una de las instancias de BP pond tank aquí, no hay valores predeterminados visibles, solo
‫que no está visible en la instancia, solo en el valor predeterminado.
‫Así que eso tiene sentido en este momento.
‫Volvamos al código VS y tenemos algunos especificadores más para conocer.
‫Ahora hemos visto que podemos editar en cualquier lugar y que con nuestros especificadores visibles podemos elegir solo
‫instancia o solo predeterminado.
‫Entonces, como probablemente haya adivinado, podemos editar solo en la instancia o solo en los valores predeterminados si así lo deseamos.
‫Así que hagamos un par más en 30 de dos en dos.
‫Voy a hacer uno llamado editar valores predeterminados solo int e inicializarlo con un valor, digamos nueve,
‫y luego otro int 32 llamado editar instancia solo int.
‫Y le daré a esto un valor de 14.
‫Por lo tanto, queremos que edit defaults only int sea editable solo en los valores predeterminados y edite la instancia solo y que
‫sea editable solo en la instancia.
‫Ahora, los nombres de estos especificadores son bastante consistentes, así que me gustaría que adivine cuáles serían los
‫especificadores para estos dos niveles de acceso.
‫Adelante, solo haz un pequeño mini desafío rápido.
‫Pausa el video y completa estos, mira si tienes razón.
‫De acuerdo, estas serán sus propiedades y editarán los valores predeterminados.
‫El único final hará que probablemente lo hayas adivinado.
‫Edite solo los valores predeterminados y solo para editar la instancia. Le daré a esto una macro de propiedad u y esta
‫será solo la instancia de edición.
‫Así que es bastante intuitivo.
‫Avancemos y compilemos estos y volvamos aquí en el editor con BP: tanque abierto, aquí están nuestros valores predeterminados
‫de edición solo que no vemos solo instancia de edición y no esperábamos que esté configurado en nueve
‫aquí podemos cambiarlo y si vamos al mundo con una de nuestras instancias seleccionada, podemos ver editar instancia solo int
‫y, por supuesto, eso también es editable.
‫Así que ahora hemos agregado tres nuevos especificadores a nuestro gráfico aquí.
‫Solo tenemos valores predeterminados visibles, que se encuentran solo en la columna predeterminada y en la fila de solo lectura.
‫Y luego tenemos editar solo los valores predeterminados y editar la instancia solo en sus respectivas filas.
‫Así que estamos llenando este gráfico bastante rápido, pero notará que hay un par de espacios
‫vacíos a la derecha y en la columna del gráfico de eventos.
‫Así que hablemos de esto por un minuto ahora.
‫Estoy aquí en BP Pond Tank y tenemos todas estas variables que hemos expuesto en detalle, paneles,
‫según sus especificadores.
‫Puedes verlos aquí o en una instancia.
‫Pero, ¿y si hago clic derecho aquí en el gráfico de eventos?
‫El gráfico de eventos es otro lugar donde podemos acceder a las variables y potencialmente cambiarlas.
‫Entonces, si escribo editar en cualquier lugar, no veo la edición en ningún lado.
‫INT no está expuesto al gráfico de eventos.
‫No tenemos acceso a eso.
‫Hay otros especificadores que nos permiten exponer cosas aquí en el gráfico de eventos y que pueden
‫funcionar junto con los especificadores que controlan la accesibilidad del panel de detalles.
‫Y me gustaría exponer una de estas variables al gráfico de eventos.
‫Ahora, podría elegir cualquiera de estos, pero voy a elegir este visible en cualquier lugar.
‫INT Ahora la U.
‫La macro de propiedad puede tomar múltiples entradas, por lo que la tenemos visible en cualquier lugar.
‫Todavía podemos tener eso.
‫Voy a colocar una coma y me gustaría agregar otra especificada que le dará a esto una exposición final
‫visible en cualquier lugar del gráfico de eventos.
‫Entonces, lo que voy a usar es lectura de planos, escritura, lectura de planos.
‫Escribir tiene que ver con el gráfico de eventos.
‫No tiene nada que ver con el control sobre el panel de detalles.
‫Para eso está este visible en cualquier parte.
‫Entonces, Blueprint Rewrite, como sugiere el nombre, tiene acceso de lectura y acceso de escritura.
‫Así que vamos a ver cómo se ve eso.
‫Vamos a compilar esto y estoy de vuelta aquí en el editor en el gráfico de eventos si hago clic con el botón derecho y escribo visible
‫en cualquier lugar.
‫Veremos dos opciones diferentes que se hacen visibles en cualquier lugar y se configuran como visibles en cualquier lugar.
‫INT Si selecciona, hacerse visible en cualquier lugar.
‫INT Obtenemos un nodo y es como cualquier otro nodo de modelo, representa esa variable de C++ y
‫si lo arrastramos, podemos acceder a ese valor para hacer algo con él.
‫Ahora voy a desplazarme hacia afuera y verán que tenemos estos nodos atenuados, el actor comienza, se superpone
‫y marca el evento y Begin Play se llama al comienzo del juego, como saben.
‫Así que podemos hacer algo aquí.
‫Me gustaría usar un nodo de cadena de impresión y si arrastro y escribo cadena de impresión, entonces aquí está.
‫Es un nodo de función de blueprint y toma una entrada llamada en cadena.
‫Ahora, si paso el cursor sobre él, dice en cadena y luego cadena justo debajo de eso.
‫Ese es el tipo que este nodo acepta como parámetro de entrada.
‫Y sabemos que nuestro int visible en cualquier lugar es un int 32, no una cadena.
‫Pero si hace clic en la salida de esta nota y la arrastra y la pega aquí en la entrada antes de soltar
‫el botón izquierdo del mouse, verá una ventana emergente que dice convertir entero en cadena y si suelta, obtendrá
‫este práctico nodo de conversión. que convierte de un número entero al tipo de cadena, lo cual es muy útil para
‫nosotros porque no tenemos que averiguar cómo convertir un número entero en una cadena.
‫Es automático para nosotros.
‫Ahora, si le doy al play, veremos el valor 12 impreso tres veces y solo dura unos segundos.
‫Ese es el comportamiento de la cadena de impresión.
‫Ahora, la razón por la que lo vemos tres veces es porque tengo tres instancias diferentes del tanque de estanque BP aquí en
‫el mundo.
‫Dependiendo de cuántos hayas arrastrado al mundo, verás ese número.
‫Porque para cada una de estas instancias individuales, el comienzo del juego se llama al comienzo del
‫juego.
‫Entonces, para evitar confusiones, simplemente eliminaré mis otros dos y dejaré una sola instancia de Beep Pond
‫Tank aquí en el mundo.
‫Entonces, solo tengo uno y si voy y presiono reproducir nuevamente, veo 12 impresos en la pantalla solo una vez.
‫Eso es acceso de lectura a visible en cualquier lugar int pero vimos que también tenemos acceso de escritura.
‫Eso significa que podemos establecer su valor desde aquí en el gráfico de eventos.
‫Entonces, si hago clic derecho y escribo visible en cualquier lugar int nuevamente, puedo seleccionar establecer visible en cualquier lugar int y
‫tengo un nodo setter que toma una entrada, podemos pasar el valor de algún otro nodo o podemos tomar este
‫pequeño cuadro de texto y código duro de valor, digamos 66.
‫Y ahora, tan pronto como el flujo de ejecución desde el comienzo de la reproducción llegue
‫a este nodo, el nodo setter escribirá en cualquier lugar visible y establecerá su valor en 66.
‫Y, por supuesto, podemos imprimir esto de nuevo.
‫Así que voy a usar una cadena de impresión.
‫Y para el valor pasado a la cadena de impresión, me gustaría que el valor sea visible en cualquier lugar int.
‫Ahora puedo hacer esto de dos maneras.
‫El setter tiene un nodo de retorno, por lo que después de establecer el valor, devuelve ese valor y podemos
‫usarlo para conectarlo directamente a la cadena de impresión.
‫La otra forma es simplemente hacer clic derecho y volverse visible en cualquier lugar en uso que obtenga el nodo y podemos
‫conectar el valor de este nodo directamente en la cadena de impresión que haría exactamente lo mismo.
‫Así que no necesito eso.
‫Voy a eliminar ese nodo.
‫Y ahora, lo que espero ver cuando juego es imprimir primero el valor de int visible en cualquier
‫lugar, que comienza en 12 y luego, después de establecer su valor en 66, debería ver el valor 66 imprimirlo en
‫la pantalla.
‫Así que le damos al play y vemos 12 y 66.
‫Ahora parece que están en orden inverso.
‫Eso es porque la cadena de impresión agrega mensajes más nuevos en la parte superior.
‫Así que ese es un comportamiento normal.
‫Ok genial.
‫Así que hemos visto que podemos hacer que un plano variable se lea ahora mismo.
‫También podemos controlar si podemos o no establecer esto desde el gráfico de eventos.
‫Entonces, expongamos otra variable para que podamos obtenerla de los planos, pero no configurarla aquí para editarla en ningún lado.
‫INT Voy a agregar una coma y agregar un to específico a esto ahora para acceder a él en el gráfico
‫de eventos pero no poder configurarlo ni escribirlo.
‫La hora especificada es de solo lectura de blueprint, por lo que editar en cualquier lugar int ahora es solo de lectura de blueprint.
‫Todavía se puede editar en el panel de detalles, tanto en el valor predeterminado como en las instancias, pero en el gráfico de eventos es
‫de solo lectura.
‫Así que sigamos y compilemos esto y volvamos aquí en el editor. Voy a hacer clic con el botón derecho en el
‫gráfico de eventos y escribir editar en cualquier lugar y comprobarlo.
‫Tenemos una edición en cualquier lugar final, pero no tenemos una edición establecida en ningún lugar int porque es un modelo de
‫solo lectura, no podemos escribir en él.
‫Así que voy a seleccionarlo.
‫Aquí hay edición en cualquier lugar.
‫INT Y si quisiera, podría usar un nodo de cadena de impresión para ver su valor.
‫No hay necesidad de hacer eso.
‫Ya sabemos cómo hacerlo.
‫Solo estoy demostrando que no podemos escribir en esta variable.
‫Bien, voy a seguir adelante, resaltar estos nodos y eliminarlos.
‫Así que nuestro gráfico ahora está lleno.
‫Hemos aprendido que podemos hacer que nuestras variables sean visibles solo en los valores predeterminados y podemos hacerlas editables solo
‫en los valores predeterminados o solo en la instancia.
‫Así que realmente tenemos control total desde el lado de C++.
‫Ahora también vimos que podemos exponer estas variables al gráfico de eventos y hacer que sean de solo lectura o de lectura
‫correcta usando estos especificadores de solo lectura de blueprint, lectura y escritura de blueprint.
‫Así que ahora tienes un desafío.
‫En la última lección creamos una variable.
‫Hice un flotador y lo llamé velocidad.
‫Ahora vas a tomar esa variable.
‫Lo creas en la última sección y controlas su acceso en el gráfico de eventos.
‫Así que expóngalo al gráfico de eventos usando uno de los nuevos especificadores que ha aprendido, y luego
‫probará el acceso de lectura y escritura para esto.
‫Use un nodo de cadena de impresión para que pueda ver su valor y, si lo cambia, demuéstrese a sí mismo que
‫lo ha cambiado.
‫Entonces, si hace que su modelo variable se lea correctamente, intente cambiarlo con un nodo establecido y luego use un nodo de cadena
‫de impresión para ver su valor usando el inicio de reproducción del evento.
‫Si lo hizo como modelo de solo lectura, simplemente puede obtener el valor e imprimir su valor usando una cadena de
‫impresión.
‫Así que agregue la especificación correcta a su variable personalizada y use la cadena de impresión para probar el acceso en el gráfico de
‫eventos.
‫Pausa el video y prueba esto.
‫Bueno.
‫Así que voy a desplazarme hacia abajo hasta mi variable de velocidad aquí y mi variable de velocidad se puede editar en cualquier lugar y me
‫gustaría que se lea el plano.
‫Correcto, entonces puedo cambiarlo desde dentro del gráfico de eventos.
‫Así que voy a agregar blueprint, leer, escribir y simplemente compilar.
‫Entonces, de vuelta en el tanque del estanque de BP, si escribo velocidad ahora veo el getter y el setter para esto.
‫Así que voy a usar la velocidad establecida.
‫Voy a establecer su valor desde Begin Play.
‫Así que conectemos esto.
‫Y para el valor, voy a ingresar 900 y desde la nota establecida, si arrastro, puedo escribir cadena de impresión.
‫Ahora voy a hacer clic y arrastrar fuera del nodo de salida, conectarlo a la cadena.
‫Así que si le doy al play, hay 900, fíjate que dice 900. 0.
‫Eso es porque esto es un flotador.
‫Y entonces me está dando la cortesía de mostrar ese primer punto decimal.
‫Así que esa es una buena característica incorporada aquí.
‫Me muestra un dígito a la derecha del punto decimal para mi variable de velocidad.
‫En resumen, aprendimos algunos especificadores más para la nueva macro de propiedades.
‫Aprendimos solo los valores predeterminados visibles, solo editar los valores predeterminados y solo editar la instancia.
‫Y también aprendimos cómo podemos controlar el acceso de lectura y escritura en el gráfico de eventos con Blueprint,
‫read, write y Blueprint Read.
‫Solo el programador de C++ tiene mucho control sobre lo que se expone y lo que se puede cambiar en el modelo
‫y dónde los usaremos a lo largo de esta sección del curso.
‫Y continuará utilizándolos a lo largo de su carrera como desarrollador de motores irreales.
‫Te veré en la próxima conferencia.