Planas Unreal Engine 5: Inventario multijugador de RPG (2023) | Pixel Helmet | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Planas Unreal Engine 5: Inventario multijugador de RPG (2023)

teacher avatar Pixel Helmet, Game Developer & Publisher

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      1.01 Introducción

      1:20

    • 2.

      1.02 Descarga del proyecto

      2:13

    • 3.

      1.03 Visión general de un motor poco real 5

      14:59

    • 4.

      1.04 Lo que el proyecto ya contiene,

      3:33

    • 5.

      2.01 Introducción a los planos de widget

      5:03

    • 6.

      2.02 Diseñar la interfaz principal

      10:55

    • 7.

      2.03 Diseñar los botones de la categoría de inventario

      7:06

    • 8.

      2.04 Diseñar las Ranuras de inventario

      6:17

    • 9.

      2.05 Diseñar el inventario

      8:38

    • 10.

      3.01 Mostrando la interfaz principal

      7:11

    • 11.

      3.02 Qué es la replicación de eventos

      4:50

    • 12.

      3.03 clave vinculante para abrir un inventario

      3:52

    • 13.

      3.04 Introducción a la enumeración

      2:18

    • 14.

      3.05 Crear el Evento Widget abierto y cerrado

      12:38

    • 15.

      3.06 Introducción a la comunicación de planos

      3:30

    • 16.

      3.07 Interfaces de planos

      6:52

    • 17.

      3.08 Mostrando el inventario

      3:00

    • 18.

      4.01 Crear el modelo de elementos básicos

      5:09

    • 19.

      4.02 Introducción a los planos infantiles

      3:43

    • 20.

      4.03 Crear los artículos

      5:20

    • 21.

      4.04 Introducción a las estructuras

      3:16

    • 22.

      4.05 Estructura de información de artículo

      3:52

    • 23.

      4.06 Introducción a las tablas de datos

      2:40

    • 24.

      4.07 Tabla de datos

      9:55

    • 25.

      4.08 Función de biblioteca

      7:14

    • 26.

      5.01 Crear el componente de inventario

      1:19

    • 27.

      5.02 Estructura de ranura de inventario

      1:58

    • 28.

      5.03 Tabla de datos y estructura de inventario

      5:58

    • 29.

      5.04 Crear las variables de inventario

      4:01

    • 30.

      5.05 Cambiar el tamaño de las variables de categoría de inventario

      3:25

    • 31.

      5.06 Mostrando las categorías de inventario

      11:20

    • 32.

      5.07 Mostrando las Ranuras de inventario

      8:39

    • 33.

      5.08 Establecer una categoría de inventario seleccionada

      14:22

    • 34.

      5.09 Re-adding elementos existentes para array

      7:51

    • 35.

      5.10 Mostrando artículo en el inventario

      7:51

    • 36.

      6.01 Interactuar con los artículos

      5:36

    • 37.

      6.02 Añadir inicial a la lógica de inventario

      6:39

    • 38.

      6.03 Añadir artículo al inventario

      6:25

    • 39.

      6.04 Crear una nueva pila de artículo

      37:16

    • 40.

      6,05 Encontrar una pila parcial

      17:48

    • 41.

      6.06 Optimizar el inventario

      13:05

    • 42.

      7.01 Agregando la operación de arrastrar y soltar

      5:37

    • 43.

      7.02 Disolver del inventario

      14:37

    • 44.

      7.03 Habilitar la Física de Armas

      3:37

    • 45.

      8.01 Obtener información de tragamonedas

      4:10

    • 46.

      8.02 Actualizar la información de las tragamonedas

      3:49

    • 47.

      8.03 Dropping de caída en la Ranura de inventario

      5:46

    • 48.

      8.04 Actualizar las Ranuras de inventario

      9:10

    • 49.

      8.05 Agregar efectos de sonido

      6:45

    • 50.

      8.06 probar el producto final

      3:24

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

159

Estudiantes

1

Proyectos

Acerca de esta clase

Acerca de este curso

Si no estás seguro de cómo crear un sistema de inventario multijugador para tu juego, este curso es para ti. Aprenderás cómo hacer un sistema de inventario listo para multijugador desde cero sin escribir una sola línea de código utilizando Unreal Engine 5 Blueprints. ¡No se necesita experiencia! Verás lo fácil que es crear un sistema de inventario similar al en los juegos populares.

Aprenderás a diseñar el inventario y programar la funcionalidad de él, incluyendo artículos apilables, consumibles, cantidad y más. Podrás crear categorías de inventario y clasificar los elementos en consecuencia. Por último, pero no menos importante, aprenderás a crear artículos lootable que se agregarán a tu inventario y soltarlos a otros jugadores.

Todo lo anterior se enseñará usando la mejor práctica de codificación a través de un seguimiento profundo de videos. También te proporcionaré el proyecto terminado para que puedas inspeccionar como quieras mientras sigues el curso.

Únete a nuestra comunidad de apoyo

El desarrollo de los juegos puede ser frustrante de vez en cuando. Quizás te pierdas una caja no facturada en algún lugar, lo que te deja en el bosque durante horas. O quizás necesites apoyo moral e ideas de aspirantes a desarrolladores como tú. Estamos aquí para ti cuando lo necesites. Únete a nuestra comunidad, sitio web y redes sociales de Discord que aparecen en la descripción de perfil.

Te deseo lo mejor,

Moustafa Nafei

Conoce a tu profesor(a)

Teacher Profile Image

Pixel Helmet

Game Developer & Publisher

Profesor(a)

Pixel Helmet is a video game developer and publisher based in Denmark. We have recently released our first game Farmtale on the Steam platform.

We decided to get on Skillshare to create high-quality courses and share our knowledge with the game development community. Learning can be tedious at times and we aim to create a fun learning experience.

We offer to create courses within Modeling, Texturing, Unreal Engine, Blueprints, C++, Game Design, and much more. If you need any help during a course, please let us know through Skillshare or connect with us on Discord, Twitter, or LinkedIn.

Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. 1.01 Introducción: En este curso, vamos a aprender a desarrollar un sistema de inventario RPG multijugador utilizando planos en el archivo Unreal Engine, comenzaremos desde cero y cubriremos tanto el diseño de la interfaz de usuario como la programación del inventario. Este curso cubrirá cómo diseñar la interfaz de usuario para el inventario. Cómo crear categorías de inventario, cómo crear espacios de inventario, cómo saquear artículos al inventario, cómo mostrar el artículo aludido en tu inventario con icono y texto. Cómo soltar artículos del inventario para arrastrar artículos en el inventario para cambiar los espacios de inventario, dos artículos y cómo agregar efectos de sonido al inventario. Al final de este curso, podrás crear con confianza tu propio sistema de inventario de RPG multijugador para implementar en tus proyectos de juego actuales o futuros. Diseñé este curso para cualquiera que esté interesado en crear un sistema de inventario para su juego y Unreal Engine five, utilizando las mejores prácticas de codificación y código optimizado. Espero que me acompañes en este curso. Y recuerda que siempre estoy aquí todo el camino a lo largo del curso para ayudarte. Y espero verte pronto. 2. 1.02 Descarga del proyecto: Ahora sigamos adelante y descarguemos los materiales del curso. Puedes encontrar los materiales de costo en el sitio web o en el correo electrónico cuando compras el curso. Así que revisa ya sea el sitio web o el correo electrónico. Vamos a abrir los materiales del curso. Y dentro de aquí tenemos este proyecto llamado inventario RPG. Ahora, por lo general si has tomado mis cursos anteriores, me gusta comenzar con un proyecto en blanco de Unreal Engine porque quiero enseñarte todo desde cero y darte confianza con el desarrollo de juegos. No obstante, como estamos haciendo un inventario, necesitamos un juego que ya funcione. Esto es sólo un juego muy, muy básico. No he hecho mucho. Sigamos adelante y arrastremos esta carpeta de inventario de RPG al escritorio porque necesitamos extraerla. Esta es una carpeta zip, por lo que necesitamos extraer el contenido. Esto va a llevar algún tiempo. Voy a esperar a que termine aquí. Bien, ahora que ya está hecho, puedo hacer doble clic sobre él. Y dentro de esta carpeta puedes ver este es el proyecto Unreal Engine con el que estaremos trabajando. Ahora vamos a seguir adelante y cerrarlo y vamos a Documentos. Y en lugar de documentos, tenemos algo que se llama una carpeta de proyectos irreales. Y aquí es donde están todos tus proyectos anteriores de Unreal Engine. Si no has hecho ningún proyecto antes, este estará vacío. Así que dentro de Documents, Unreal Engine o Unreal Projects, hagamos clic y arrastremos nuestra carpeta de inventario RPG dentro de aquí. Y cuando lo haces, cuando abres el lanzador de Epic Games ahora y entras a la biblioteca, dentro de aquí ya puedes ver que aparece el proyecto de inventario RPG que acabamos de extraer en la carpeta Unreal Projects. Ahora estoy usando Unreal Engine 5.1, 0.1. Pero si tienes 5.1, 0.2 o tres, o 5.2, y así sucesivamente. Las versiones más nuevas, en realidad no importa. También se puede seguir a lo largo. Hagamos doble clic en este proyecto de inventario de RPG y lo abramos. Este es el proyecto con el que estaremos trabajando. Y antes de comenzar en la siguiente lección, echemos un vistazo a una descripción rápida de Unreal Engine five. 3. 1.03 Motor unreal 5: Antes de comenzar a desarrollar el inventario, tomemos una visión general rápida de Unreal Engine five. Si has tomado mis cursos anteriores y ya conoces Unreal Engine five, simplemente puedes saltarte esta lección y saltar a la siguiente. Pero si eres nuevo aquí, echemos un vistazo rápido a cómo se construye Unreal Engine five. Aquí en el medio es lo más importante. En mi opinión, esta es la ventana gráfica. Y en la ventana gráfica se puede ver cómo se ve el juego. Entonces, dentro de aquí, puedes mantener presionado el botón derecho del mouse y puedes echar un vistazo alrededor dentro de la ventana gráfica y ver cómo se ve. Entonces este es el nivel de nivel simple de construido para esto, para esta lección aquí, también puedes moverte manteniendo pulsado el botón derecho del ratón y haciendo clic en W para avanzar, haciendo clic en S para moverte hacia atrás, haciendo clic en D para moverte a la derecha y haciendo clic en una para moverte a la izquierda. Ahora otra vez, recuerda mantener pulsado el botón derecho del ratón mientras haces clic en W, D, S y a para moverte. Y así es como navego principalmente por el interior de la ventana gráfica. Simplemente sostengo el botón derecho del ratón y presiono estas teclas aquí para moverme. También puedes mantener presionado el botón derecho del ratón y hacer clic en e para subir o hacer clic en la señal para bajar. Pero también se puede hacer es mantener pulsado el botón izquierdo del ratón. Y cuando haces esto, puedes moverte así. Normalmente no uso esto y tal vez a veces en mi laptop, pero generalmente no. También puede mantener pulsado el botón izquierdo del ratón y el botón derecho del ratón al mismo tiempo. Y también puedes moverte así. Lo último es que puedes acercar y alejar usando la rueda de desplazamiento del mouse. Así que acercar y alejar el zoom. También puedes otra vez, simplemente mantén presionado el botón derecho del mouse, haz clic en W para moverte a ese ítem, o hacer clic en S para alejarte del ítem. Entonces nuevamente, así es principalmente como navego por dentro de la ventana gráfica, pero puedes simplemente, solo echar un vistazo alrededor del lado de esos niveles. Aproveche la idea de moverse por dentro de aquí y vea qué es lo que mejor se siente para usted. En lugar de la ventana gráfica, tenemos diferentes botones. Entonces aquí arriba, en realidad no demasiado importante para este curso. Por ejemplo, tenemos la vista en perspectiva ahora mismo estamos en la vista de perspectiva. Puedes ver el juego desde la vista superior. Entonces, si alejas, acercas y alejas usando el botón de la rueda del mouse, puedes ver así es como se ve el juego desde arriba. De nuevo, puedes simplemente dar click aquí arriba, volver al modo perspectiva. Realmente demasiado importante para este curso, pero es bueno saber que tenemos estos botones para poder ver el juego en diferentes modos de visualización, por ejemplo, si no iluminara este mapa, estaría muy oscuro. Y es por ello que a veces hago clic aquí arriba y voy al modo apagado. Ahora puedo ver mi nivel aunque no tenga iluminación. Y cuando enciendo mi juego, hago clic aquí arriba y vuelvo al modo en vivo. Muy, muy importante. Tenemos diferentes herramientas aquí arriba. Entonces la primera es la herramienta de selección. Al hacer clic en él, puede seleccionar diferentes elementos dentro del puerto de visualización. Aquí al lado tenemos la Herramienta Mover dando click sobre ella. Ahora cuando haces clic en un elemento, puedes ver estos puntos de pivote. El rojo es el eje x. Y si haces clic en él, puedes mover este ítem en el eje x. El verde es el eje y, y el azul es el eje z. Estos son los puntos de pivote. Puedes mover los elementos cuando tengas seleccionada la Herramienta Mover. También puedes moverlos en dos direcciones sosteniéndolo aquí cerca del centro. Y esto, y esta caja aquí, moviéndola a eje a la vez, si solo hago clic en Control Z para deshacer mi movimiento aquí, y solo para poder volver aquí, también tenemos la herramienta de rotación haciendo click sobre ella. Puedes rotar un artículo en tres grados diferentes así. También puede escalarlos haciendo clic en la herramienta de escala. Y puedes escalarlo. Voy a dar click, dar clic en Control Z para simplemente tenerlo aquí arriba otra vez, así que queda claro. Se puede escalar en estos tres ejes diferentes. Ahora bien, si quieres escalarlo de manera uniforme, puedes dar click sobre esta caja blanca en el medio. Y cuando escales, esto escalará de manera uniforme. Ok, vuelve a hacer clic en Control Z. Ahora muy importante saber es que tenemos atajos para estas herramientas ya que tardaría mucho tiempo si tienes que hacer click aquí arriba, mover este ítem, dar click aquí de nuevo para rotarlo y así sucesivamente. Entonces, si haces clic en Q en tu teclado, tienes la herramienta Seleccionar. Das click en W, tienes la Herramienta Mover. Si haces clic en E, tienes la herramienta de rotación. Y si haces clic en son, tienes la herramienta de escala, por ejemplo para este registro por aquí, puedo hacer click en W para moverlo. Puedo dar click en E para rotarlo. Y tal vez lo quiera de esta manera, como aquí. Y puedo hacer clic en W para moverlo hacia arriba, como en R2, tal vez escalarlo así, moverlo hacia arriba, y así sucesivamente. Entonces puedes ver que es mucho más rápido trabajar de esta manera, en lugar de simplemente hacer clic aquí todo el tiempo trabajando en Control Z. Para volver a poner esto de nuevo, también tenemos herramientas de ajuste. Entonces por aquí se puede ver cuando muevo mi artículo, si acabo de mover este bolígrafo, e.g Se puede ver que se ajusta a una cuadrícula. Y esto es porque tienes esto habilitado aquí arriba. Entonces, si haces clic en él y lo mueves, puedes ver que se mueve sin problemas. Y si vuelvo a hacer clic en él, ya puedes ver que es snaps otra vez. También puede hacer clic en este número y aumentar el ajuste. Entonces ahora puedes ver cuando lo arrastre, se ajusta a una cuadrícula mucho más grande y puedes disminuirla de nuevo si así lo deseas. Entonces estas son las herramientas de ajuste o el movimiento, o el escalado o la rotación y para el escalado también. Para que puedas ver si voy a mi herramienta de rotación haciendo clic en E en el teclado. Puedo girarlo y se chasquea cada diez grados. Puedo hacer click en él aquí para deshabilitarlo. Y ahora puedo, puedo girarlo suavemente así así. Y haciendo clic de nuevo en Control Z. Entonces, estas son las herramientas de ajuste para la herramienta de movimiento, la herramienta de rotación y la herramienta de escala. Lo último que tenemos es la velocidad de la cámara, y esta es la velocidad de esta cámara en este momento, dentro de esta ventana gráfica, puedes hacer click sobre ella y disminuir la velocidad. Y ahora se puede ver que es muy lento. Esto generalmente se usa cuando se quiere enfocar en objetos muy pequeños dentro del nivel para que la cámara no se mueva demasiado rápido. Si tienes un nivel grande, quieres viajar, puedes aumentar la velocidad de la cámara. Y ahora puedes ver que me muevo mucho más rápido en mi nivel. Voy a ponerlo de nuevo a la velocidad de cámara de cuatro. Aquí arriba tenemos la barra de herramientas. En este momento no es muy importante. Pero lo más importante es que podamos hacer clic en este botón Reproducir para jugar nuestro juego, o haciendo clic en jugar aquí, puedes ver que ahora estoy jugando a mi juego. Puedo moverme con las teclas W, S, A y D. Así puedo moverme y mirar a mi alrededor con el ratón. Esto es lo más importante que debes saber ahora mismo, aquí arriba. Al hacer clic en Escape para dejar de jugar el juego y haciendo clic en estos tres botones, podrás elegir cómo quieres jugar tu juego. Por lo que generalmente comienza por esta ventana gráfica seleccionada. Entonces, si juego mi juego así, jugué dentro de la ventana gráfica. Lo que me gusta en el modo multijugador. Me gusta jugar en la nueva ventana del editor porque tengo dos ventanas abiertas para multijugador, así que me gusta tenerla de esta manera. Vamos a cerrarlo por ahora. Y las cosas multijugador están aquí abajo. Así que vamos a preocuparnos por eso más adelante en las lecciones posteriores, a veces tu motor puede quedar mal y puedes intentar retomar, echa un vistazo aquí en la configuración tienes algo llamado ajustes de escalabilidad de motores. Ahora mismo, los míos están puestos a épicos porque mi computadora es rápida. Pero si tienes una computadora más lenta, puedes cambiarla a baja calidad o calidad media y así sucesivamente. Así que realmente bueno saber que está ahí a la derecha aquí tenemos el outliner y el outliner son simplemente artículos que tienes dentro de tus niveles. Entonces todos estos artículos que ves aquí están dentro de este nivel actual. Y si selecciono por ejemplo este taburete aquí, si hago clic en él, se puede ver que también selecciona en seleccionarlo aquí en el outliner. Entonces, sea lo que sea que selecciones en el nivel, lo puedes ver aquí en el outliner. También puedes seleccionar cosas solo hacer clic sobre ellas aquí arriba. Así que ahora puedes ver cuando hago clic sobre ellos por aquí, también los selecciona dentro de mi nivel. Ahora bien, esto es útil para cuando quieras encontrar algo específico, por ejemplo, puedes buscar aquí arriba. Quiero encontrar mi taburete, por ejemplo y es este de aquí abajo. Para esta herramienta, la encontré aquí, puedo dar click sobre ella. Y éste es el indicado. Cuando tienes un nivel muy grande y no encuentras artículos, puedes buscarlos aquí. Digamos que no sabías dónde estaba. Como si tuvieras un nivel muy grande que seleccionaste y realmente no lo puedes ver. Puedes hacer click en F en tu teclado y te llevará allí automáticamente. Además, olvidé decir si quieres duplicar o si quieres duplicar este ítem, puedes sostener Alt en tu teclado y luego puedes arrastrar aquí. Entonces sosteniendo Alt en el teclado, arrastrando, esto copiará el ítem. Así que muy útil a veces cuando se quiere diseñar el nivel. Para que no tengas que arrastrar este elemento una y otra vez, haciendo clic en él haciendo clic en Eliminar para eliminarlos, voy a hacer clic en la X aquí arriba para poder ver todos los elementos nuevamente. Si quieres organizar tus artículos aquí en el outliner, siempre puedes hacer clic en este ícono de carpeta. Esto creará carpetas y puedes simplemente hacer clic y arrastrar y soltar estos elementos dentro de las carpetas. Y puedes organizar tu, tu outliner. Sólo voy a arrastrarlo otra vez y quitar este de aquí. A continuación tenemos el panel Detalles. Y los paneles de detalles simplemente muestran detalles sobre el elemento seleccionado en la ventana gráfica. Entonces si selecciono este bolígrafo por aquí, pueden ver, puedo ver diferentes detalles sobre este bolígrafo. Puedo ver la ubicación de la misma y el mundo. Puedo ver la rotación de la misma, la escala. Puedo ver qué Malla Estática está usando. Una sensación, por ejemplo, haga clic en este icono aquí. Lo puedes encontrar dentro del navegador de contenido. Y puedo ver, es ésta. Puedo ver qué materiales está usando. Información sobre la física, la colisión, etc. Y es diferente para cada artículo que selecciones. Entonces, si selecciono este, puedo ver diferentes detalles sobre este artículo, diferentes detalles sobre este artículo y así sucesivamente. Tan importante, el panel de detalles es algo que usas todo el tiempo en el motor. Si hago clic en esto, oye, por ejemplo I. Puedo establecer la ubicación para ello si solo hago clic y arrastre aquí. Entonces, en lugar de usar la herramienta Mover así, solo puedo hacer clic y arrastrar sobre estas cajas también si así lo deseas. Entonces a veces solo quieres moverte así, y a veces quieres números específicos. Así que simplemente puedes hacer clic aquí y escribir por ejemplo 1,400, la ubicación X. Y se puede ver que pasó por aquí. Y también correcto, creo que son -1,400. Será por aquí. Entonces -1,400. Se puede ver que volvió a aquí. Ahora bien, si tienes números específicos que quieres escribir, puedes escribirlos aquí en lugar de intentar mirarlo aquí. Y por último, tenemos el Navegador de Contenido. Por lo general esto no está disponible o esto no se muestra cuando abres Unreal Engine five por primera vez. Entonces puedo hacer clic derecho y podemos cerrar. Y así es como suele parecer cuando abres Unreal Engine five, por primera vez, tienes el dibujo de contenido en lugar del navegador de contenido. Al hacer clic en él, puedes ver, puedes ver esta misma pestaña que vimos antes, pero la fila de contenido desaparece cada vez que haces clic dentro de esta ventana gráfica. Entonces dando click en el contenido ROA, si quiero hacer click en algo aquí, puedes ver que desaparece y me parece un poco molesto porque estoy acostumbrado a Unreal Engine cuatro, donde está arriba todo el tiempo. Entonces lo que puedes hacer es hacer clic en este contenido ROA, y hacer clic en pato en maquetación. Y esto se mantendrá alto todo el tiempo. Y muy, muy sencillo. El navegador de contenido solo contiene todos los archivos que tienes para el juego. Entonces, por ejemplo, para los activos, estas son en realidad las carpetas que he creado para hacer este nivel. Entonces, por ejemplo, aquí en artículos, vamos a usar esto más adelante para crear artículos para el inventario. Y solo puedes hacer clic y arrastrar esto al nivel. Y se puede ver cómo se ven. Cancelado, haga doble clic en ellos y véalos dentro de este visor también. Entonces estos son todos los archivos que tienes, estas son todas las animaciones. Simplemente sigamos adelante y eliminemos a todos los que crean carpetas dentro de aquí, podemos hacer clic derecho y hacer una nueva carpeta. También puedes cambiar el color de una carpeta si haces clic en ella, clic derecho y vas a establecer color. Esto es genial para cuando quieres organizar tus archivos y quieres verlos rápidamente. Simplemente puedes darles colores. Yo sólo voy a borrar esta por ahora. Para agregar elementos dentro del navegador de contenido, puede hacer clic con el botón derecho aquí, o puede hacer clic en el botón Agregar. Normalmente hago clic, clic con el botón derecho sobre aquí, y puedes agregar planos. Esto lo haremos mucho para programar nuestro inventario. También utilizaremos la interfaz de usuario para crear la interfaz de usuario para el inventario. Y tienes por ejemplo animación que tienes, puedes crear un nuevo nivel, leer una nueva carpeta también. Por aquí, puedes ver que podemos crear muchas cosas y se ve abrumador. Pero probablemente no estarás usando muchas de estas cosas para empezar. Así que en realidad no tienes que saber todo dentro de aquí. Enfócate en lo que es muy importante. Entonces en este curso, solo estamos enfocados en crear un inventario por ahora. Al crear el inventario, vamos a usar muchas de estas cosas. Vamos a usar muchos de los planos, azules, nodos Blueprint. Y vamos a usar la interfaz de usuario. Vamos a usar los sonidos para efectos de sonido y así sucesivamente. Entonces en este curso vas a estar aprendiendo muchas de estas cosas por aquí. Así que no te preocupes por eso por ahora y solo echa un vistazo rápido por aquí. En este motor, puedes simplemente moverte, click en las cosas, moverlas. Realmente no es demasiado importante si destruyes cosas dentro de este nivel. Y a veces cuando te dice que tienes iluminación que necesita ser reconstruida, puedes hacer clic en esta, construir y construir todos los niveles, y esto construirá automáticamente toda la iluminación para ti. Ahora puede tomar algún tiempo si tu computadora es muy lenta, pero puedes ver el progreso aquí abajo. Y cuando termine de construir la iluminación, puedes seguir adelante y cerrarla. Y sigamos adelante y hagamos clic en Archivo y Guardar todo. Y pasemos a la siguiente lección. 4. 1.04 Lo que el proyecto ya contiene: Antes de comenzar, echemos un vistazo a lo que ya contiene este proyecto. Ahora he seguido adelante y diseñé este juego rápido para ti y en realidad no contiene mucho, pero necesitábamos algo para empezar a programar el inventario. Entonces por aquí en la carpeta de activos, tengo algunos artículos. Estos artículos los usaremos para crear artículos que podamos perder nuestro inventario y colocarlos dentro de nuestro inventario. Ahora vamos a eliminarlo por ahora. Te voy a enseñar a hacer artículos y a verlos también. Y el jugador, tenemos las diferentes animaciones y puedes ver si haces clic en jugar para el juego, y ya tenemos un conjunto de Blueprint de Animación. Y para el terreno, solo tengo las texturas para este terreno. También incluí efectos de sonido para ti que podemos usar cuando aludimos artículos, abrimos el inventario y así sucesivamente. Y en los planos, muy básicos. He creado un modo de juego. El modo está vacío, y por lo general esta vista aparece si no tienes nada dentro de la clase blueprint. Entonces tienes que dar click aquí arriba abrir editor de planos completo. Y así es como se ve. Vacío, no he tocado realmente nada. Yo solo, pero el controlador del jugador y la Clase de Peón por defecto y abriendo el controlador del jugador, esto también está vacío. Tenemos al jugador, al jugador aquí en vez del jugador. Muy básico. Acabo de agregar el nuevo sistema de movimientos para este jugador. Así que solo moviéndonos de un lado a otro y mirando a su alrededor con nuestro ratón. Así que en realidad no pasa nada loco aquí. Entonces tenemos el plano de animación para la animación para el jugador. Y nuevamente, aquí tenemos el movimiento para caminar hacia adelante, atrás, izquierda y derecha. Y tenemos los mapas. Este es el mapa en el que nos encontramos actualmente. Tenemos algunos artículos de Marketplace. Yo uso este fantástico pack de pueblo. Lo puedes encontrar en el mercado de forma gratuita. Y esto solo se usa para diseñar este nivel. Tenemos el cielo de las mercancías, que es este tipo de aquí arriba. Acabo de agregar niebla así que realmente no podemos verla solo para hacer este nivel un poco más interesante. Y luego tenemos estos personajes. También puedes encontrarlos en el mercado. Cosas muy, muy chulas. Los uso a veces también para crear prototipos de algunos de mis otros juegos. Entonces, si estoy haciendo un juego de disparos y así sucesivamente, así que vamos a eliminar este por ahora. Entonces esto es lo que tengo dentro de aquí. Y el último es el UI. Vamos a utilizar esto para diseñar nuestro inventario. Tenemos algunos botones aquí. Por cierto, si tienes una vista muy grande como esta, tengo un tenedor, un menor, por lo que se nota muy grande así. Puede hacer clic en Configuración y tamaño de miniatura. Puedo hacerlo pequeño, por ejemplo y se verá así. Yo solo voy a usar el medio para que lo veas mejor para este curso. También incluí una fuente aquí, así que puedes usarla para la interfaz de usuario. Tengo algunos iconos que podemos usar cuando eluimos el plátano, por ejemplo podemos agregar este icono al inventario. Y luego tenemos las imágenes, que es básicamente la ranura de inventario. Entonces estos son todos los artículos. Juego muy básico, solo podemos andar por ahí, eso es lo único que podemos hacer ahora mismo. Y mira a tu alrededor. Y te puedes imaginar si tienes este juego de un amigo o alguien que encontraste en Reddit o en algún otro lugar. Y solo te pide que pongas un inventario en su juego. Entonces esto es lo que vamos a hacer. 5. 2.01 Introducción a los planos de Widget: Antes de comenzar a diseñar la interfaz de usuario, sigamos adelante y echemos un vistazo a lo que es un Widget Blueprint. Así que pasemos a la carpeta UI. Hagamos clic aquí. Y vamos a la Interfaz de Usuario. Se trata de todos los elementos de la interfaz de usuario. Aquí podemos seleccionar el Plano Widget. Vamos a crear uno aquí. Selecciona widgets de usuario, y sigue adelante y llámalo, normalmente lo llamo wb o ¿blueprint como prefijo? Y entonces llamemos a éste principal. Entonces la interfaz de usuario principal, esta se mostrará como nuestra interfaz de usuario principal. Más tarde. Hagamos doble clic sobre él. Y aquí ves así es como se ve un Plano Widget. Entonces Widget Blueprint, puedes diseñar la interfaz de usuario aquí. Tienes un diseñador y luego tienes una gráfica. Entonces en el diseñador, diseñas la interfaz de usuario. Y en la gráfica, programas la funcionalidad de la interfaz de usuario que has diseñado. Dentro de aquí puedes ver que tienes un pellet y en lugar de la paleta, puedes agregar diferentes cosas a tu plano, por ejemplo, puedes agregar un botón. Puedes hacer clic y arrastrarlo aquí. momento se puede ver que el botón es enorme, y esto es porque voy a dar click en Conjuntos de control. Y esto se debe a que solemos agregar un lienzo para empezar. Entonces, si buscas Canvas y éste realmente agregamos, antes de agregar algo Canvas, puedes arrastrarlo dentro de aquí o puedes hacer clic y arrastrarlo y soltarlo por aquí. Entonces, si acabo de borrar este de aquí, puedo hacer clic y arrastrarlo hacia aquí en su lugar. Entonces puedes arrastrarlos aquí, aquí. Así que volvamos y tomemos el botón e.g Puedes agregarlo al lienzo, o puedes volver a agregar el botón así, donde lo arrastras aquí abajo en la jerarquía, algo así. Y se puede ver que se le sumó aquí arriba. Y siempre puedes hacer click sobre él y puedes arrastrarlo alrededor del lienzo. También puedes cambiar la posición igual que antes de que tengamos un panel de detalles. Recuerda que te lo dije antes, si haces clic en elementos en tu viewport, tienes un panel de detalles. Tienes eso también dentro del Plano Widget. Entonces tienes detalles sobre este botón. Se puede ver la posición. También puedes cambiar la posición aquí. O puedes arrastrarlo por ahí. Si quieres arrastrarlo, tal vez quieras poner algo, un número específico, por ejemplo podemos escribir 1800 y tal vez esto es lo que nos gusta. También puedes hacer clic en él y cambiarle el tamaño. Otra vez. También puedes redimensionarlo aquí si lo deseas. Todos los detalles para el botón. Nuevamente, si solo agregas otros artículos, puedes ver que tienen diferentes detalles. Entonces por ejemplo si tomo el texto aquí, se puede ver en el texto puedo editar el color del texto. Puedo editar la fuente. Entonces, ¿qué tipo de letra voy a usar? He incluido una fuente para ti. Recuerda, en la carpeta UI, fuentes, he incluido esta fuente para ti. Así que también puedes seleccionarlo aquí en la familia de fuentes. Aquí abajo tenemos animación de interfaz de usuario. Podríamos meternos en ello. No estoy muy segura, pero en estos momentos no es demasiado importante. Entonces voy a hacer clic derecho aquí y dar clic en Cerrar porque realmente no lo necesitamos. Y lo último que es importante aquí es que aquí arriba puedes hacer clic en compilar. Dice sucio necesita ser recompilado. Y lo que esto hace es que solo comprueba si tienes algún error en tu código. Y ahora mismo realmente no tenemos ningún código, así que aquí va a quedar limpio. Pero si lo hiciéramos, te avisaría y te diría que algo anda mal. Así que puedes intentar jugar por aquí e intentar tomar una imagen, por ejemplo, colocarla aquí, puedes volver a escalarla. Puedes ver qué detalles tienes para una imagen, por ejemplo, el pincel. Se puede escuchar en la imagen, se puede cambiar la imagen, por ejemplo esta hamburguesa aquí. Y ahora puedes ver puedes cambiar el tamaño de la misma. Y también puedes cambiar el tamaño del mismo aquí, hacer clic en estas pequeñas flechas solo significa que querías restablecer al valor predeterminado. Entonces haciendo clic en él. Y el valor predeterminado es 15150. Y se puede ver cuando cambio el tamaño aquí, realmente no se ve afectado. Y esto se debe a que en realidad estás re-escalando toda la imagen así. Tienes que hacer clic en Tamaño al contenido si deseas que surta efecto en este aquí. Entonces, mirando nuestro restablecimiento al valor predeterminado, este es el tamaño de valor predeterminado para esta hamburguesa. Sí, y eso fue todo. Esta es una muy, muy sencilla. Entonces en el diseñador diseñará la interfaz de usuario en la siguiente lección. Y en la gráfica, codificamos la funcionalidad de la interfaz de usuario. Pero por ahora, centrémonos en diseñar la interfaz de usuario. Entonces, antes de terminar esta lección, voy a eliminar todas estas cosas, incluyendo el Canvas. Vamos a compilar, vamos a guardar, guardar todo aquí y cerrarlo. Y pasemos a la siguiente lección. 6. 2.02 Diseña la interfaz principal: Bien, ahora estamos listos para diseñar la interfaz de usuario principal si no has seguido en la lección anterior. Adelante. En la carpeta UI, puede hacer clic con el botón derecho en la interfaz de usuario y crear un Blueprint Widget. Y este es el Widget Blueprint para la interfaz de usuario principal que ya creamos. Hagamos doble clic en él. Y antes de comenzar, quiero mostrarles lo que vamos a hacer. Así que siempre es agradable ver qué vamos a hacer antes de que lo hagas. Para que podamos visualizarlo. Aquí en el menú I. Sólo vamos a tener este botón. Este es el botón de inventario en el que se puede hacer clic y se abre el inventario. Así que muy, muy sencillo. Esto es lo que estamos tratando de hacer. Entonces volvamos a nuestro punto de vista aquí. Y como te dije antes, tenemos que agregar un Canvas antes de agregar nada. Entonces aquí arriba, si buscas panel de lienzo, puedes arrastrarlo a la jerarquía aquí abajo. Y ahora hemos agregado el panel de lona para el botón, para el botón de inventario. Obviamente necesitamos el botón UI aquí para que podamos arrastrarlo hasta aquí. Pero como viste antes, necesitamos un icono en la parte superior del botón. Y es por ello que usamos algo llamado superposición. Si buscas Overlay o también puedes encontrarlos aquí abajo. Para que puedas dar click en estas flechas para encontrar artículos que puedas agregar a tu Lienzo. Entonces este es el que ahora mismo queremos agregar llamado el overlay, o puedes buscarlo aquí arriba. Entonces, si no sabes todas estas cosas, puede ser difícil de entender, pero solo hazlo una, dos o tres veces. Y es muy fácil porque haces esto todo el tiempo. Entonces como necesitamos un botón y un icono encima de él, necesitamos algo llamado superposición. Así que vamos a, déjame borrar este botón de nuevo. Y voy a arrastrar esta superposición al lienzo. Y por lo general se suman aquí arriba. Y para este ahora, agreguemos un botón. Y luego agregamos una imagen. Este es el ícono Eso va a estar en la parte superior del botón. Ahora déjame arrastrarlo aquí solo para que podamos ver cómo se ve. Entonces ahora mismo, vamos a hacer clic en el botón y vamos a diseñarlo. Si quieres. Por ahora puedes desactivar la imagen. Así que puedes dar click sobre este ojo aquí. Esto solo resalta la imagen por ahora. Vamos a hacer clic en el botón y el estilo por aquí, cambiemos cómo se ve. He incluido para ti al final, los botones en la carpeta de botones de la interfaz de usuario. He incluido botones para ti que podemos usar. En lo normal. Sigamos adelante y cambiemos la imagen a este botón, raíz cuadrada azul. Para el tamaño, podemos dar click sobre esta flecha para redimensionarla a lo que sea la normal. En este momento se puede ver que estoy zoom más siete. Por lo que es muy importante saber esto. Estoy zoom más siete, así que así no es como va a parecer cuando juegue el juego. Se va a quedar así. Entonces, si me alejo, así es como va a quedar. Así que uno a uno aquí. Ahora, por lo general cuando haces un botón, el color es gris por alguna razón. No sé por qué. Entonces haciendo clic en este tinte aquí, y cambiémoslo a blanco. Entonces el verdadero color está apareciendo aquí. Y en lugar de hacer una caja redonda alrededor de dólares te dan una ventaja extraña alrededor de tu botón y no quiero eso. Quiero ir aquí, haga clic en dólares en su lugar. Y puedes ver cuando reescalas la imagen, se ve muy raro. Pero si usas una caja y estableces el margen en 0.5, en realidad puedes volver a escalarlo sin perder detalle de este botón. Para que veas puedo reescalarlo. Y se ve bien. Si no usaste el margen de 0.5, se verá así. Entonces margen 0.5 y se ve bien. Bien, así que haciendo clic en él aquí, vamos a pasar al Hubbard y vamos a seleccionar el botón, cuadrado azul flotaba. Y para éste, en realidad lo que se puede hacer algo muy rápido. Yo uso esto cuando desarrollo mi juego. Puedo cambiar y hacer clic derecho aquí arriba, o simplemente puede hacer clic derecho y hacer clic en Copiar. Normalmente solo presiono Shift y el botón derecho del mouse. Así que Mayús botón derecho del ratón para copiar esto. Y puedes desplazar botón izquierdo del ratón para pegarlo encima de aquí. Y encima de aquí se puede ver que es muy rápido. Entonces tienes toda la información. Y entonces solo recuerda cambiar estos dos de nuevo. Aquí. Hay 12 de descanso. Nuevamente, recuerda cambiar el tamaño aquí. Creo que para éste, voy a traer a usar algo así como 90. Este es justo como predeterminado, así que solo se incumplió en 68 y este 190. Voy a hacer clic de nuevo. Voy a mantener presionada la tecla Mayús y volver a hacer clic aquí para copiarla y mantener presionada tecla Mayús y hacer clic con el botón izquierdo para pegarla encima de estos tamaños de imagen. Ahora bien, tal vez te preguntes por qué no lo escala aquí en la x. Y esto es porque escalará automáticamente en un poco cuando agreguemos la imagen. Por ahora, vamos a compilar y deja este botón. Pasemos a la imagen. Entonces dando click en la imagen, dando click en este icono para ver la imagen. Y para la imagen, necesitamos encontrar el icono de la mochila. Entonces es esto de aquí, o puedes buscarlo aquí arriba, seleccionando el ícono de la mochila. Y cuando diseñé la interfaz de usuario, vi que 100 por 100 era de gran tamaño para esto. Sólo voy a cambiar este a 100 por 100 y tamaño de imagen. Puedes ver si hago clic en este botón predeterminado, el predeterminado es 150. Voy a bajarlo a 100 por 100. Y en lugar de hacer esta superposición así, en lugar de volver a escalarla así, voy a hacer clic en Tamaño al contenido. Entonces esta superposición ahora está dimensionando a cualquier contenido que haya dentro de ella. Entonces este botón de aquí, en vez de tenerlo aquí arriba en esta esquina, voy a alinear horizontalmente esto. Entonces va a llenar toda la superposición. Este botón ahora está llenando toda la superposición. Esto es lo que significa. Y voy a alinearlo aquí abajo verticalmente en la parte inferior. Entonces está en la parte inferior de la imagen. Sólo voy a alinearlo al centro del botón. Al hacer clic en la imagen, hacer clic en alineación central para la vertical y la horizontal. Entonces es justo en medio de esta superposición. Ahora tenemos que empujar esta imagen hacia arriba. Puedes usar la traducción aquí abajo en la transformación, o simplemente voy a usar el relleno aquí arriba. Entonces, para el relleno en la parte inferior, esto significa que estás empujando la imagen de abajo hacia arriba. Entonces voy a empujarla por 15 pixeles. Y pueden ver que empujo la imagen aquí arriba y se ve genial ahora mismo. Voy a empujarla por 12 a la izquierda y por 12 a la derecha. Entonces le damos más espacio aquí para este botón, así que ahora se ve mucho mejor. Ahora bien, lo último que tenemos que hacer, así que en vez de tener este botón aquí en el medio, lo que podemos hacer es colocarlo aquí abajo. Entonces lo que puedes hacer aquí es que veas si pones la posición a 00 por aquí, ves que se ajusta a esta esquina de aquí arriba, pero quiero que esté aquí abajo en mi pantalla. No quiero que mis botones aparezcan aquí arriba. Quiero que mi botón esté aquí abajo. Lo que puedes hacer aquí es que puedes cambiar el punto de anclaje. Entonces, al hacer clic en tu superposición, tienes algo llamado anclas. Pinchando aquí. Y puedes cambiar el punto de anclaje a aquí abajo. El punto de anclaje significa es, digamos que has arrastrado este botón aquí abajo así, y se ve bien. Y no vas a cambiar el punto de anclaje. Entonces, lo que esto significa es cuando tu ventana de juego se hace más pequeña. Entonces tomemos esto aquí. Y digamos que el botón está aquí. Si tu ventana de juego se hace más pequeña así, si alguien cambia el tamaño de tu juego, el botón va a volar hacia arriba hasta esta esquina. Entonces, si tu pantalla es muy pequeña así, el botón en realidad está aquí arriba y no aquí abajo. Entonces no se ve correcto. Y esto es lo que significa anclar. Solo le estás diciendo al juego dónde está tu botón inicialmente. Voy a anclarlo aquí abajo en vez de poner una posición a 00. Se puede ver que ahora está fuera de la pantalla. Y para hacerlo dentro de la pantalla, hay que usar esta llamada alineación. Y se puede ver que es cero o uno. Puedes ver si escribo uno aquí, 0.5, es el medio. Esta es la x, esta es la y. y 0.2 y así sucesivamente. Para que veas si escribo una, empujo aquí. Y nuevamente, alineación para la y, hay que ponerlo a uno también para empujarlo dentro de esta ventana para que pueda jugar con la alineación. Usualmente usamos 00.5 para ponerlo en el medio o uno. Lo ponemos aquí así. Bien, entonces en vez de tenerlo directamente aquí a la pantalla, quiero darle un poco más de espacio sitios. Entonces voy a dar click en la posición de superposición para el x -35 y posicionado para el y -35. Ahora, tenemos un poco más de espacio aquí a un lado, así que es una locura sujetando directamente aquí a la pantalla. Bien, vamos a compilar. Y lo último que puedes hacer, muy buena práctica. Puedes ver si vas a la gráfica, puedes ver que se llama botón e imagen. Estas son las variables que se han creado porque has diseñado esta interfaz de usuario aquí. Y se puede ver que estos son los nombres para ellos. También están apareciendo como variables en tu código. Sin embargo, es muy mala práctica dejarlos así porque si tienes varios botones como este, por ejemplo, realmente no sé cuál es cuál. ejemplo, si tienes un botón para inventario, un botón para tus habilidades, estadísticas y lo que sea, realmente no sabes qué es si se llaman así. Entonces, permítanme borrar todos esos. Y por cierto, si quieres saber cómo lo dupliqué, simplemente puedes hacer clic derecho y hacer clic Duplicar o hacer clic en Control D. Bien, así que cambiemos el nombre aquí. Puedes dar click en F2 en tu teclado dando click en este aspecto F2. Y lo voy a llamar btn para botón. Y llamémoslo inventario. Lo mismo para la imagen, inventario de imágenes y para la superposición. Ove para Overlay, y llámalo inventario. Bien, así que ahora hemos terminado con la interfaz de usuario principal. Voy a ir un poco más rápido en los otros planos de widgets. Pero ahora ya sabes lo básico y cómo crear algo muy sencillo. Guardemos todo, cerremos esto y pasemos a la siguiente lección. 7. 2.03 Diseña los botones de la categoría de inventario: Ahora diseñemos el botón de categoría de inventario aquí en la carpeta UI. Nuevamente, hagamos clic con el botón derecho en la interfaz de usuario. Hacer un nuevo plano de widget. Utilice o seleccione el widget de usuario. Y llamemos a esta categoría de inventario, así. Ahora vamos dentro de ella aquí. Y al igual que antes, recuerda que tenemos que añadir un Canvas antes de hacer algo dentro de aquí. Así que vamos a arrastrar este panel de lienzo y editar. Y ahora podemos empezar a diseñar la categoría. Entonces para la categoría, de nuevo, quiero mostrarles lo que vamos a hacer. Vamos a hacer esto. Vamos a diseñar este botón aquí. Este icono se cambiará dependiendo de qué categoría tengamos, pero así es como se ve. Muy, muy sencillo. Otra vez, volvamos aquí. Vamos a agregar una superposición. Al igual que antes necesitamos un botón con un icono encima de él. Y sólo voy a agregar una superposición dentro de ésta. Y te voy a mostrar por qué en un rato. Es un poco confuso ahora mismo. Así que busquemos de nuevo el botón y agréguelo a esta superposición aquí. Y busquemos la imagen y la agreguemos a la superposición. Justo como antes. Lo extra es que solo tenemos esta superposición aquí arriba y te voy a mostrar por qué. Entonces, para los botones de categoría, realmente no necesitamos todo el lienzo, como lo hicimos para la interfaz de usuario principal. Así que recuerda para el menú que estaba usando todo este Canvas y estamos agregando este botón aquí abajo, que están jugando menú o la interfaz de usuario principal. Entonces te puedes imaginar si estuvieras jugando el juego, el botón está aquí abajo, pero qué categoría realmente no necesitamos todo el Canvas. Entonces podemos dar click en el lienzo aquí, o en realidad simplemente subir aquí y la pantalla de relleno y seleccionar esta llamada deseada. Realmente no necesitamos todo el espacio. Solo necesitamos lo que hayamos diseñado aquí abajo. Entonces, al hacer clic nuevamente en el botón, cambiemos estos ajustes. Pero lo puedes hacer es que puedes ir a la interfaz de usuario principal si quieres hacer click en este botón. Y nuevamente, mantén presionada la tecla Mayús y haz clic derecho para copiar. Y mantenga presionada la tecla Mayús y haga clic con el botón izquierdo para pegar. Entonces sólo voy a pegar esta información. Y para este tamaño aquí, sólo voy a hacerlo uno a uno. Ver por uno a veinte, este es el tamaño que quiero. Y se puede ver que no está cambiando realmente en la y aquí. Esto es, recuerda antes te dije que puedes hacer clic en esta superposición y hacer clic en Tamaño a los contenidos, así tamaños a cualquier tamaño que sea el contenido. Y para éste sólo voy a hacerlo 12120. Solo presta atención nuevamente al zoom aquí. Así es como se ve uno por uno. Esto es lo que vamos a estar buscando, no así. Bien, así que sigamos adelante y copiemos el tamaño de la imagen pegada aquí abajo. Y dando click en esta imagen, quiero alinearla en el centro de este botón. Entonces haciendo clic en estos alineación central, horizontal y vertical. Y para la imagen, voy a volver a usar la mochila. Realmente no importa lo que estés usando aquí porque vas a cambiar esta imagen dependiendo de qué categoría tengas. Más adelante vamos a, por ejemplo, crear una categoría para categoría grado alimenticio para consumibles, y crear una categoría o armas. Entonces, dependiendo de cuál sea la categoría, vamos a cambiar esta imagen para que realmente no importe lo que hayas seleccionado aquí. Yo sólo voy a hacer el tamaño de la imagen 85, 80. Justo como antes. Recuerda que empujamos hacia arriba el ícono aquí en el menú. Entonces vamos a hacer lo mismo por el fondo. Yo sólo voy a escribir seis aquí. Simplemente puedes probarlo. Puedes escribir 1018. Mira lo que te funciona, pero seis funcionaron para mí y para la izquierda y la derecha, sólo voy a escribir de nuevo 12 por 12, así como esto. Entonces por si acaso el botón de alguna manera se vuelve muy pequeño, todavía tengo algo de espacio aquí. Entonces creo que esto fue todo. Así que vamos a tomarlo porque lo tenemos todo y todo se ve bien. Vamos a compilar y guardar todo. Lo último que hay que cambiar es antes de que lo olvidemos, está aquí en la visibilidad, la visibilidad. Qué es esto. Ahora cuando juegues al juego y quieras hacer clic en este botón detrás de esta imagen, esta imagen va a bloquear tu botón y no vas a poder presionarlo. Esto se debe a que la visibilidad está establecida en Visible para esta imagen. Entonces, a lo que necesitas cambiarlo es a none hit comprobable. Lo que dice aquí en la descripción del tooltip, visible pero no golpeado comprobable, lo que significa que no puede interactuar con el cursor. Y esto es lo que queremos, es solo una imagen para mostrarte que este es el botón para la categoría, o en este caso para el inventario aquí en el menú I. Así que tenemos que hacer lo mismo aquí. Entonces haciendo clic en la interfaz de usuario principal, cambiando la divisibilidad a festival no exitoso. Así que ahora podemos dar click a través de esta imagen y podemos presionar el botón aunque esta imagen esté delante de ella. Así que vamos a compilar. Acuérdate de guardar todo. Justo como antes. Cambiemos los nombres aquí, botón, categoría y categoría de imagen y superpongamos aquí, categoría. Bien, entonces la razón por la que agregué esta superposición aquí, antes que nada, cambiemos el punto de anclaje al medio. Entonces voy a cambiar el punto de anclaje al medio. Y recuerda si escribes ceros, cero para la posición puedes ver que ancla así. Si recuerdas de la lección anterior, tienes que cambiar la alineación. Entonces te lo dije antes de que usemos 00.5 o 1.0. 0.5 es la correcta si queremos que se quede en el medio. Entonces 0.50, 0.5, y se puede ver mi posición 00. Ahora el botón aquí está en el medio para esta superposición. Por qué creé dos de ellos es porque ahora aquí en la segunda superposición, puedo usar este relleno si no tenías que superposiciones. Imagina si solo tienes este, probablemente no tengas relleno. Si esto no es como un niño. Puedes ver que esta superposición es hijo de esta superposición. Y para los niños, podemos usar este acolchado aquí. Y estamos haciendo este acolchado. Sólo escribamos cinco por ahora, voy a escribir cinco. Y esto solo le da cinco tanto en la izquierda, arriba, derecha, e inferior. Entonces, la razón por la que hago esto es más tarde cuando creamos las categorías dinámicamente es algún espaciado entre las categorías. Como si, imagina si tienes cinco categorías aquí abajo. Aquí hay algo de espaciamiento entre los botones. Si no tuvieras el espaciado, estarían uno encima del otro. Si quieres eliminar estas líneas discontinuas, por cierto, un truco rápido, simplemente puedes hacer click arriba aquí y podrás ver cómo se ve sin todas estas líneas. Bien, vamos a guardar todo lo que fue para aquí. Vamos a cerrarlo, guardarlo todo, y pasemos a la siguiente lección. 8. 2.04 Diseña las ranuras de inventario: Ahora diseñemos las ranuras de inventario. Así que vamos a hacer clic en la interfaz de usuario. Hagamos clic con el botón derecho aquí en la interfaz de usuario y creemos planos de widgets como widget de usuario. Así que lo mismo que hemos estado haciendo hasta ahora. Bueno, ésta, las ranuras de inventario. Entonces estas son las ranuras donde los artículos se mostrarán al hacer clic en esta ranura de inventario. Al igual que antes, hay que tener un Canvas antes de que podamos hacer cualquier cosa. Entonces agregando un lienzo subiendo aquí y la pantalla de relleno, seleccionando deseada, igual que lo que hicimos para la categoría. Entonces dentro de aquí ahora podemos agregar una superposición, y voy a agregar otra superposición dentro de ella para que podamos poner algo de relleno igual que lo que hicimos para la categoría. Y voy a agregar un botón, en realidad solo imagen. Realmente no necesitamos un botón aquí. Voy a agregar una imagen dentro de esta superposición. Y esta imagen va a ser el lodo. Entonces, si solo bajamos aquí, tenemos esta llamada ranuras de inventario, o esta ranura de inventario. Voy a escuchar en el sorteo como seleccionar dólares y escribir el margen a 0.5, solo para que podamos escalarlo y no se vea raro. Entonces, si lo tienes a imagen por defecto, puedes ver que perderás calidad. Lo estamos cambiando a la escritura de Bach 0.5 en el margen, podemos reescalarlo sin perder calidad. Voy a hacer clic en esta superposición aquí y otra vez, seleccionar tamaño al contenido. Y para esta imagen aquí, para la ranura de inventario, sólo voy a hacerla 90 por 90 en el tamaño. Entonces se ve así. Y para la alineación en vez de alinear, realmente no importa en este caso, pero solo para que esté más limpia, voy a alinearse horizontal y verticalmente. Entonces todo el asunto aquí para esta superposición, quiero que se quede en el centro. Entonces nuevamente, el punto de anclaje para el centro, alineación 0.50, 0.5, y el tamaño o posición a cero. Por cero. Se queda en el centro. Y voy aquí en el overlay otra vez, dale un poco de relleno. Y igual que antes, sólo le voy a dar una maridaje de cinco. Entonces tenemos espacios entre las ranuras de inventario. Y esto quedará mucho más claro cuando realmente creamos el inventario general. Y se puede ver el espacio entre las ranuras. Ahora necesitamos tener un artículo dentro de estas ranuras de inventario. Voy a agregar otra imagen a esta superposición. Voy a centrarlo aquí. Solo seleccionemos un icono aleatorio. Realmente no importa. Estamos cambiando esto dinámicamente en el juego. Entonces solo voy a seleccionar este encuentro de iconos, hagamos esto 160 por 60. Y realmente no necesitamos cambiarlo en una caja porque es solo una imagen, un icono. Y lo último que queremos hacer es que queremos texto aquí abajo, como un número. Si tienes he cumplido, necesita mostrar un número de cinco. Entonces busquemos texto aquí arriba y arrástrelo hacia abajo hasta la superposición, como este texto. Alinear hacia abajo aquí verticalmente y a la derecha horizontalmente, así es aquí abajo. Y permítanme simplemente escribir un número, por ejemplo 23, solo por ahora como marcador de posición para la familia de fuentes, voy a seleccionar, ver, tal vez el negrita, el espejo y negrita. Voy a hacer la talla a 18. Y sólo voy a darle un bosquejo. Entonces dando click aquí, puedes darle un esquema y ver el esquema aparece aquí si vas a escribir 23456 y así sucesivamente. Entonces escribiendo tal vez dos, y aquí para el color del contorno. Entonces haciendo clic en el color del contorno y solo selecciona algún color aleatorio aquí. A lo mejor algo así, algo que encaja con el fondo. También puedes usar el recogedor de color. Escoge este color de fondo, vuelve a darle click aquí, y vuelve al color del contorno y solo hazlo un poco más oscuro, algo como esto Eso queda bien. Al hacer clic en Bien, y hay un pequeño efecto que se ve genial. Entonces aquí en la sombra, si solo haces el, dale un poco de sombra, por ejemplo 1.2 en la y. Ahora mismo no está apareciendo porque tu alfa no está puesto a cero, así que ponlo en uno y podrás ver las sombras que realmente aparecen detrás del texto. Voy a poner éste en 1.2. Y un efecto genial es si haces que este color de sombra de color sea el mismo que tu color de contorno, va a dar un efecto 3D genial. Así que simplemente haciendo clic en él, copia el color lineal hexadecimal, yendo al color de sombra, pegándolo aquí abajo. Se puede ver que da ese efecto de sombra 3D, que se ve mucho genial. Ahora para la posición de la misma, se puede ver que está aquí en el borde. Yo sólo voy a, en vez de usar el relleno, sólo voy a bajar aquí y la traducción, si puedo encontrarla aquí abajo. Y en la x, sólo voy a empujarla , algo así. A lo mejor si solo me alejo a 11 aquí para poder ver cómo se ve realmente. A lo mejor algo así está bien. Si solo escribo cinco, por ejemplo, si tenemos cinco meets, así es como se verá. Nuevamente, puedes dar click sobre este botón para eliminar los guiones y así podrás ver cómo se ve. Y creo que se ve genial. Entonces podemos usar esto. Vamos a compilar, guardar todo. Nuevamente, recuerde cambiar el nombre de sus artículos aquí. Entonces esta es ranuras de inventario de imágenes. Este es un artículo de inventario de imágenes. Y éste es, se le puede llamar ítem uno ciudad. A lo mejor en lugar de llamar artículo de inventario, solo puedo llamarlo artículo como sea. Y para esta superposición, sólo voy a dejar que estén en un momento no muy importante. Bien. Entonces eso fue todo. Y recuerda otra vez, tal vez, tal vez necesitamos cambiar esto para que me guste la visibilidad a no golpear comprobable de nuevo para no afectarnos. Pero no estoy muy segura por ahora. Dejémoslo ser y podremos cambiarlo más tarde. Ve a Archivo, guarda todo y pasemos a la siguiente lección. 9. 2.05 Diseña el inventario: Ahora diseñemos el inventario. Para el inventario, lo que va a parecer es algo así. Así que hemos diseñado la ranura de inventario, y esto es lo que quise decir sobre el espaciamiento entre las ranuras de inventario. Es por ello que añadimos relleno a la superposición. Así que tenemos un poco de distancia entre estos espacios de inventario. Entonces así es como va a verse. Las categorías están aquí a un lado. Entonces vamos a diseñar esto. Así que sigamos adelante y haga clic de nuevo con el botón derecho en la interfaz de usuario, plano de widget. Llamemos a este inventario. Entonces dentro de aquí, de nuevo, igual que antes, agreguemos un lienzo. Y para el inventario, tienes que visualizar lo que intentas hacer. Entonces, para cualquier interfaz de usuario que intentes hacer. Entonces aquí lo que estamos tratando de hacer es que tenemos las categorías de aquí a un lado, y luego tenemos el inventario. Entonces necesitamos algo llamado caja horizontal. Entonces necesitamos que las categorías estén al lado del inventario. Y aquí vamos a usar algo que se llama la caja horizontal. Y solo puedes agregarle elementos para ver qué está haciendo. Entonces, si solo buscas un botón, por ejemplo y lo agregas al cuadro horizontal. Si solo Control D para duplicarlo, puede ver qué elementos horizontalmente entre sí. Entonces, eliminemos estos botones. El cuadro horizontal va a contener un cuadro vertical donde los botones de categoría se alinean verticalmente. Y entonces vamos a tener una superposición donde tengamos nuestro inventario. Así como así. Tenemos en el cuadro horizontal, los bichos verticales para las categorías. Vamos a cambiarle el nombre por ahora. Voy a dejar vb para caja vertical y voy a llamarlo x consultas. Y para el overlay, solo llamémoslo inventario así. Entonces la superposición de inventario consiste en una imagen. Necesitamos los antecedentes para el inventario. Entonces agregándole una imagen y esta imagen, en lugar de establecer un tamaño para ella, solo se va a rellenar horizontal y verticalmente. Se puede ver que no se está llenando horizontalmente. Y esto se debe a que este overlay, que es el padre de esta imagen, tampoco se está llenando. Entonces en vez de auto aquí, hagamos clic en Rellenar y llenará todo el asunto. Entonces lo que sea que decida cambiar la caja horizontal tamaño dos, va a llenar este espacio aquí. Ahora dando clic de nuevo a la imagen, cambiemos esta a botón cuadrado azul. Yo uso esto como fondo también. Se ve bien. Entonces ahora realmente solo por los botones y dibujar como una caja, cinco en el margen, para que no perdamos calidad. Entonces ahora tenemos los antecedentes para el inventario. Y ahora lo que tenemos que hacer es tener algún texto aquí arriba que diga inventario. Y entonces necesitamos los perezosos de inventario aquí abajo. Entonces puedes imaginar que necesitamos una caja vertical. Busquemos un cuadro vertical agregado a la superposición. Déjame solo alinear esta caja vertical, solo llenar todo el asunto. Y necesitamos un poco de espaciado porque en vez de dibujar en los bordes de este inventario, voy a agregarle un poco de relleno. Entonces tal vez algo así como 30. Aquí solo le vamos a agregar cosas para que no golpeemos los bordes del fondo para la parte superior. Y a lo mejor sólo voy a escribir 25, así como esto. Y ahora agreguemos un texto. Este texto sólo va a decir inventario. Alineemos este texto al medio. Cambiemos la fuente aquí. Y sólo voy a seleccionar esta extra negrita. Y cambiemos el tamaño. A lo mejor solo deja que sea así. En realidad es agradable. Si solo tienes este zoom a uno por uno. Se puede ver cómo se ve. Para este, dejemos que diga inventario, inventario, y podemos agregarle algo de sombra. Yo sólo voy a hacer que sea 23.4, el Alpha 0.3. Ahora puedes ver que tenemos una sombra sutil debajo de este texto, lo que hace que se vea mucho mejor y no tan plano. A continuación vamos a agregar las ranuras de inventario. Entonces para hacer esto, necesitamos algo llamado panel de cuadrícula. Entonces, si solo buscamos grid, tenemos este gran panel. Vamos a agregarlo a esta caja vertical aquí en el gran panel. Si solo subes aquí y buscas inventario. Ahora puedes ver los planos de widgets que has creado aquí. Entonces tenemos la categoría y tenemos las ranuras. Entonces tomando esta ranura y agregándola al panel de cuadrícula, puedes ver cómo se ve. Da click en éste, da click en Control D para duplicarlo. Después cambia la fila a una. Y ahora podemos ver cómo se ve. Así que duplica esta otra vez y solo escribe uno aquí en la columna. Yo sólo quería ver cómo se ve. Voy a copiar esto otra vez, bien, dos en la columna. Y así es como se ve. Se puede ver. Obviamente no parece correcto. Entonces tenemos que averiguar qué pasa. Ahora podemos dar click sobre esta superposición aquí y todo se ve correcto. Tenemos que dar click sobre este cuadro horizontal y puedes ver que se ve correcto si cambio el tamaño de este. Y en lugar de tener esto para estar a la izquierda, podemos dar click en esta alineación media. Por lo que siempre es gustos en el medio. No obstante, esta caja horizontal está bien, ahora se ve bien. Y en su lugar, podemos hacer clic en Tamaño al contenido. Entonces el tamaño del inventario solo va a, o el fondo del inventario. Va a ser del mismo tamaño que sea cual sea el contenido para el inventario. Bien, así que lo mismo para los dólares verticales. Entonces, si subes aquí y buscas inventario, toma esta categoría, arrástrala hacia abajo a esta caja vertical que hicimos antes. Sólo voy a dar click en Control D solo para copiarlo para que pueda ver cómo se ve. O puedes tenerlo de esta manera o puedes alinearlo al medio. Entonces si solo duplico esto y solo lo hago más grande, para que pueda ver cómo se ve. Los vamos a eliminar por cierto, vamos a agregar todos estos dinámicamente dependiendo de qué artículos hayamos saqueado y no este de aquí, solo tenemos tres categorías. Entonces en vez de tenerlo así, voy a hacer clic en el cuadro vertical y alinearlo al centro aquí y tal vez alinearlo horizontalmente aquí a la izquierda. Y para el Relleno, voy a agregar algo de relleno a la derecha porque quiero un poco más de espaciado entre estos dos. clic en el cuadro vertical, agregar, agregar a la derecha, tal vez diez, así. Y creo que se ve bien otra vez y podemos dar click en este inventario. Realmente no hay razón por realmente no tengamos botones alrededor. Pero por si acaso tuvieras un botón en alguna parte de aquí, cambia la visibilidad del texto a none hit comprobable porque realmente no necesitamos interactuar con él con el cursor del mouse. Bien, ahora vamos a compilar y guardar todo. Y así es en realidad lo que va a parecer. Para que podamos eliminar todos estos espacios de inventario. Podemos eliminar todas las categorías por ahora, porque vamos a agregar todas esas dinámicamente durante el juego. Entonces ahora lo que puedes hacer es simplemente cambiar el nombre de todos estos. Así que en realidad se ve bien y ya sabes qué, lo es. Gran panel. Se trata de las rejillas, inventario. Así como esto. Cambiemos el nombre de todo. Y a veces algunas cosas no son demasiado importantes para cambiar el nombre por esta es el inventario de imagen, tal vez imagen de fondo o fondo. Esta es solo la caja horizontal. Ahora necesitamos alinearlo aquí. Entonces el ancla es, voy a dibujar el inventario aquí abajo. Entonces haciendo clic en el ancla, prestándolo a aquí abajo. Y si escribes la posición a cero-cero, de nuevo, igual que antes de que veas, en realidad está fuera de la pantalla. Así que igual que antes, hay que ajustar la alineación uno por uno. Y voy a darle un poco más de espacio a los sitios. Entonces escribiendo la posición a -35 -35. Ahora tenemos un poco más de espacio. Entonces esto fue para el inventario. Vamos a guardar todo, vamos a cerrarlo y pasemos a la siguiente lección. 10. 3.01 Muestra de la interfaz principal: Ahora es el momento de mostrar la interfaz de usuario principal a la pantalla. Esta es la interfaz de usuario principal que hemos estado creando. Y es sólo que consiste en un botón, que es el botón para abrir el inventario. Ahora lo que queremos hacer es normalmente trabajar con UI dentro del controlador del reproductor. Ya tenemos un controlador de jugador en este juego. Si vas a planos, tenemos este llamado PC. Este es el controlador del reproductor. Hagamos doble clic en él y esta vista se abre cuando la pérdida del plano esté vacía. Entonces tenemos que dar click en Abrir, abrir editor de planos completo. Así que no he hecho nada dentro de aquí, aunque está completamente vacío y nuevo. Y lo que podemos hacer aquí es simplemente borrar todo por ahora. Pero lo que estamos tratando de hacer es usar este llamado si haces clic derecho aquí en este editor y escribes crea widgets. Recuerda, estamos trabajando con blueprints de widgets. Entonces esto es lo que creamos aquí, un Widget Blueprint. Entonces, si simplemente haces clic derecho aquí, derecha, crea widgets, encontrarás este nodo aquí. Esta función aquí va a crear nuestro widget. Así que vamos a seleccionar lo que queremos crear. Queremos crear la interfaz de usuario principal, esta, WB main. Vamos a hacer clic en eso. Y ahora hagamos clic derecho él y promocionemos esto a una variable que escribo, me gusta tener mi UI en variables, promoverá esto a una variable. Y vamos a llamarlo no volvería a ser principal. Bien, ahora lo tenemos y para mostrarlo a la pantalla, ahora puedes dar click en compilar. Normalmente hago esto si me ves hacer esto todo el tiempo. Es solo verificar si tienes alguno, algún error en tu código. Si hace esto, te da un boleto, significa que está limpio. Entonces todo está bien hasta el momento. Bien, entonces lo que podemos hacer aquí es arrastrar desde esta variable. Y si no creaste una variable, puedes simplemente arrastrar desde aquí en su lugar. Así que arrastra desde aquí y di Agregar a la ventana gráfica. Haciendo eso. Bien, entonces ahora hemos hecho el Agregar a la ventana gráfica. Y si haces clic en Reproducir ahora, si ya conoces planos, esto no va a suceder. Entonces, si haces clic en Reproducir y ves que realmente no pasa nada. Nada como que no haya botón en nuestra pantalla ¿verdad? Ahora. Si ya conoces blueprints, sabes que necesitamos un evento para ejecutar el código. Entonces en Blueprint, siempre necesitas un evento para ejecutar el código. No se puede ejecutar código sin eventos. Entonces, si haces clic derecho aquí y buscas comenzar a jugar, tenemos algo llamado un cerdo puede jugar evento. Da click en éste. Si quieres ver otros eventos, siempre puedes hacer clic derecho y buscar. Simplemente puedes buscar eventos y podrás ver todos los eventos entre los que puedes elegir. Por ejemplo, no se destruye evento en tick, que corre 60 veces por segundo. Y tal vez cualquier daño que se utilice cuando la capa ha sido dañada y así sucesivamente. Entonces, eliminemos esto por ahora. ¿Por qué necesitamos ahora mismo alguna muy básica llamada Begin Play Entonces este evento solo cuenta lo que sucede cuando comienzas a jugar el juego. Y vamos a conectarlo aquí. ¿Bien? Entonces cuando comencemos a jugar el juego, queremos crear este widget y agregarlo a la ventana gráfica. Pero vamos a compilar, vamos a guardar todo lo que puedan jugar. Y ahora se puede ver el botón aparece aquí en la pantalla. ¿Bien? Entonces todo está funcionando. Y si solo minimizo este por ahora, da click en estos tres puntos, número de jugadores, lo cambiaré a dos. Y para el modo net, por ahora, sólo voy a hacer clic en reproducir como servidor escuchado. Voy a hacer click en play. Y en realidad está en mi segundo monitor, que está aquí. Entonces ahora tenemos dos jugadores. Y se puede ver que ambos tienen este botón. Bien, bonito. Y ahora se puede ver que tenemos un, un bicho aquí. Y está diciendo que X no está tratando leer la propiedad que hizo WB, que es esta. No sabe lo que realmente es esto. Que lo que x no es significa, significa que esta variable está vacía. No sé qué es. Y esto se debe a que estamos trabajando en el modo multijugador. No puedes hacer esto. Esto es bueno para un jugador, pero para multijugador, no puedes hacerlo directamente. En multijugador, tenemos algo llamado cliente, y tenemos algo llamado el servidor. Unos pocos click en Reproducir. Se puede ver aquí arriba dice servidor. Y por aquí dice cliente tendrá el cliente y el servidor. Bien, por lo general la interfaz de usuario solo se ejecuta en el cliente, nunca se ejecuta en el servidor. En la siguiente lección, te explicaré más a fondo el servidor y al cliente. Pero por ahora, solo debes saber que la interfaz de usuario tiene ser ejecutada a través del cliente. No se puede ejecutar la interfaz de usuario a través del servidor. Entonces lo que tenemos que hacer es simplemente desconectar esto. Y para desconectarlo rápido, puedes hacer click en Alt en el teclado y dar click en él. Eso desconectará los pines. Y lo que quieres hacer es hacer clic derecho aquí y escribir eventos personalizados. Truco rápido para hacer esto también. Puedes escribir t punto y esto aparecerá rápido. Entonces, al crear estos eventos personalizados, llamemos a este widgets de inicialización. Así como así. Y recuerde hacer clic en este evento en las réplicas, haga clic en ejecutar en ser propietario, cliente y confiable. Te voy a explicar en la siguiente lección lo que esto significa. Pero por ahora, solo asegúrate de que se ejecute en el cliente y sea confiable y lo conectes a aquí. Así que nos estamos asegurando de que la interfaz de usuario se ejecute con el cliente. Y ahora los planos de nuevo, recuerden, al hacer clic en Reproducir, no pasa nada. Esto se debe a que siempre hay que decirle planos cuando va a ejecutar este evento. Porque tu código realmente no sabe o tu juego no sabe realmente cuándo llevar a cabo este evento. Entonces cuando empezamos a jugar el juego, quiero llamar a este evento llamado inicializar widgets. Bien, entonces vamos a compilar. Ya pueden jugar. Ahora podemos ver que aparece en la pantalla o esto aquí y este año. Y si salgo del juego, ya ves que no tengo caja. Ahora no me da ningún error. Y esto es porque, porque ya se ejecuta correctamente. Ahora toda la interfaz de usuario se ejecuta a través del cliente como debería. Y recuerda compilar, haz clic en Guardar todo. Y pasaré a la siguiente lección donde explico más a fondo, el servidor y el cliente. 11. 3.02 ¿Qué es la replicación de eventos: Bien, entonces antes de continuar, solo quiero explicarte rápidamente el servidor y el cliente en Unreal Engine. Así que de nuevo, como ya viste antes, cuando hacemos clic en Reproducir, tenemos el servidor y luego tenemos algo llamado cliente. Pero lo que hay que entender en Unreal Engine, el servidor es la autoridad del juego, por lo que el servidor es el verdadero juego. ¿Y eso qué significa? Significa que para el servidor, se ve todo correctamente. Entonces, por ejemplo, si debería haber ido a mi servidor aquí y si disparo un arma, entonces el arma es disparada perfectamente bien. Si le disparo al cliente y el servidor no le dio autoridad al cliente para disparar esta arma, nunca sucederá. Entonces, haga lo que haga en el cliente, siempre lo verifica con el servidor. Entonces el servidor comprueba. ¿El cliente está haciendo algo legal o está haciendo algo así se considera trampa Entonces todos los clientes se conectaron contigo, así que digamos que creaste un servidor Counter-Strike o un servidor de quincena o lo que sea. Y todos tus amigos están conectados contigo o tus amigos o los clientes, tú o el servidor. Entonces, si uno de tus amigos está haciendo trampa, por ejemplo , está disparando un arma sin balas. Siempre lo comprobará con el servidor. Y si el servidor ve que este jugador no tiene balas, entonces eso nunca se cerrará. Entonces el servidor siempre comprueba lo que los clientes, y este es uno bueno. Si puedes google UE para compendio de red, te dice todo sobre multijugador. Pero sólo quiero que sea muy fácil para usted porque es un documento largo. Y solo quiero mostrarte estos círculos, igual que lo que hicimos en la lección anterior. Ejecutamos los widgets en el cliente. Así que puedes ver aquí hay widgets que siempre se ejecutan en el cliente. Los controladores de reproductor se ejecutan en el servidor y los clientes para que puedan comunicarse con el servidor y el cliente. Y el modo de juego sólo se ejecuta en el servidor. Entonces si tienes algún código escrito dentro del modo de juego y quieres acceder a él a través del cliente. Esto es imposible porque el modo de juego solo existe en el servidor. Y el controlador del reproductor nuevamente, existe tanto en el servidor como en el cliente para que puedas comunicarte con ambos. Entonces lo que hicimos en nuestro juego hasta ahora, hemos estado trabajando dentro del cliente. Entonces si vuelvo a mi juego dentro de aquí, si vuelvo a los planos, recuerda que hicimos este código aquí dentro del controlador del jugador. Y el controlador del reproductor existe tanto en el servidor como en el cliente. Entonces tenemos que especificar dentro de aquí, ¿estamos trabajando con el servidor o estamos trabajando con el cliente? Si estamos trabajando con el servidor, tenemos que replicar para ejecutarlo en el servidor. Pero como siempre se maneja a través del cliente, tenemos que ejecutar el cliente y luego crear la interfaz de usuario, trabajar con la interfaz de usuario. Por lo que muy, muy importante entender. La interfaz de usuario siempre se maneja a través del cliente. Y si no los pasas a través los clientes, como vimos antes, si solo lo ejecutas directamente así, recibirás dólares. Ahora aparte de la interfaz de usuario, por ejemplo , algunas de las mecánicas de juego , digamos más adelante, vamos a crear elementos. Entonces aquí en los artículos, vamos a crear artículos. Y digamos que el jugador va a laúd esta manipulación desde el suelo y la agregará al inventario. Entonces el jugador camina hacia el jugador se acerca a esta poción. Y cuando el jugador presiona E, por ejemplo, para saquear la poción, entonces se va a ejecutar en servidores. Vamos a hacer que un evento personalizado se ejecute en el servidor. Entonces el servidor va a manejar la lógica, por lo que el servidor la comprobará. Este jugador en realidad presiona E. ¿Este jugador está realmente cerca esta poción para poder diluirla? Si no revisas estas cosas, su cliente puede hacer trampa. Y por eso lo comprobamos con el servidor. Entonces digamos que el cliente está parado aquí y solo puedes cargarle a esta persona cuando estás parado aquí. Pero si no lo compruebas con el servidor y el cliente versus E aquí, están haciendo trampa. Fácilmente pueden perder esta poción. Así que tenemos que ejecutar en servidor, comprobar si la capa realmente está interactuando con esta poción. Si el jugador tiene ***** suficiente en el inventario para cargar esta poción y así sucesivamente. Entonces vamos a pasar por el servidor más adelante, así que revisa estas cosas. Pero para la interfaz de usuario, estamos ejecutando esto en el cliente. 12. 3.03 Llave de enlace para abrir un inventario: Ahora atemos la llave I para abrir el inventario. También puedes atar la tecla B, que a veces se usa para mochila. Entonces volvamos a repasar a los planos, carpeta Blueprints. Y dentro del reproductor, ya he creado este llamado contexto de mapeo de entrada y acción de entrada. Este es el nuevo sistema de movimiento y Unreal Engine. Si no sabes nada al respecto, siempre puedes ir a mi youtube y consultar el tutorial que he hecho para ello. Así que ahora puedes hacer doble clic sobre este aquí, el contexto de mapeo. Y si lo abres, puedes ver que ya he creado el movimiento. Y cuando miras con tu mouse, entonces tenemos que crear uno nuevo, ¿ o quieres abrir tu inventario? Hagamos clic aquí. Y vayamos a inputs y vayamos a input action. Llamemos a este IA para acción de entrada, y llamémoslo inventario abierto. Ahora, lo que podemos hacer es guardarlo todo. Y dentro del contexto de mapeo, ahora podemos hacer clic en el botón Más aquí, dar clic aquí, y seleccionar el Inventario Abierto que acabamos de crear. Entonces puedes seleccionar una clave para ello. Puedes seleccionar el ojo o puedes seleccionar B. Simplemente puedes hacer clic en este icono aquí y escribir V en tu teclado, por ejemplo, también puedes encontrarlo aquí si lo deseas, mirando en el teclado y luego encontrando la tecla. Entonces también puedo agregar dos botones. Simplemente puedo hacer clic en este botón más y la clave. Ahora puedes abrir el inventario usando el pico y la llave del ojo. ¿Bien? Entonces ahora hay un pequeño error hasta el momento. Ahora mismo, se ejecuta en tick. Y te voy a mostrar sólo en un rato. Si vas al nombre real del controlador del jugador, volvamos al jugador aquí. Aquí es donde manejamos las entradas. Entonces dentro de aquí, si haces clic derecho y ahora buscas el IA abrir inventario que acabamos de hacer. Encuentras este evento aquí y solo te das cuenta de esto, este ícono significa que este es un evento haciendo clic en él. Y ahora tenemos este que acabamos de crear. Ahora bien, si solo arrastras desde el disparado y escribes la cadena de impresión solo para ver qué está pasando. Y esto solo va a escribir textos en la pantalla. Ahora solo haga clic en Play, Play. Y aquí voy a hacer clic en el botón I. Y se puede ver que imprime hola muchas veces y esto no es lo que queremos. Solo queremos abrir el inventario una vez cuando hacemos clic, es esto es solo enviar spam al inventario en este punto. Si haces clic en AI. Así que volvamos aquí. Volver al contexto de mapeo. Y aquí en el inventario abierto para el piaky y el ikea, recuerda presionar esta pequeña flecha para abrirlos aquí. Lo que queremos hacer aquí es para los disparadores, clic en el botón más, y aquí seleccionar oprimido. ¿Y qué dice? Disparan incendios una sola vez, y esto es lo que queremos hacer. Así que da click en él aquí. Y lo mismo para el ojo. Solo queremos dispararlo una vez cuando hacemos clic en el botón, Vamos a guardarlo. Volvamos. Haga clic en Reproducir. Y ahora voy a darle a la tecla I. Y lo ves sólo una vez cuando lo presiono. Y aunque lo sostenga como ahora, solo lo estoy presionando muchas veces. Pero aunque si solo lo sostengo uno, así que ahora voy a sostener el botón. Se puede ver que sólo se dispara una vez y esto es también lo que queremos. Bien, así que ahora es el momento de mostrar el inventario a la pantalla cuando hacemos clic en el botón. Pero pasemos a la siguiente lección. que aprender más sobre algo llamado enumeración. Así que guarda todo y sigamos adelante. 13. 3.04 Introducción a la Enumeration: Qué es una enumeración, es solo una lista de cualquier elemento que quieras que sea. Así que pasemos a los planos. Aquí. Hagamos clic derecho, hagamos una nueva carpeta y llamémosla enumeración. Entonces estas son las enumeraciones que estarán dentro de aquí. Ahora haga clic aquí, vaya a planos y podrá ver que tenemos algo llamado una enumeración. Entonces creemos uno y veamos qué es. Normalmente les doy el prefijo de E o enumeración. Y para éste, solo llámalo widgets de juego. Vamos a una lista de widgets de juego. Vamos a entrar de aquí. Y ahora puedes ver que es muy sencillo. No tenemos mucho dentro de aquí. Puede hacer clic en Agregar enumerador. Y dentro de aquí, obtienes este nombre para mostrar y puedes darle un nombre y una descripción. Entonces, qué es una enumeración, es solo una lista. Eso es simplemente lo que es. Es solo una lista y puede ser una lista de cualquier cosa, por ejemplo, esta se llama Gameboy jets. Entonces solo quiero hacer una lista de juego Nosotros solo, tenemos hasta ahora queremos abrir el inventario. Un widget que tenemos hasta ahora es el inventario. También tenemos la interfaz de usuario principal, pero realmente no la necesito dentro de aquí. Ahora tenemos el inventario hasta en realidad no tenemos más. Pero podríamos, por ejemplo, tener algo así como menú de habilidades. Digamos que tenemos un juego más grande. Tenemos menú de elaboración. Podríamos tener un menú de pausa, por ejemplo, podríamos tener muchos widgets aquí dependiendo de lo que quieras agregar. Voy a eliminar todos estos haciendo clic en este icono. Pero también puedes hacer una lista de cualquier otra cosa, por ejemplo, la elaboración de artículos. A lo mejor necesitas una barra de oro. Va así. A lo mejor necesitas esconderte de vaca o algo así. Entonces puede ser una lista de cualquier cosa. Pero ahora mismo solo vamos a crear, solo queríamos enumerar los widgets del juego que tenemos ahora mismo es solo el inventario. Entonces esto fue muy fácil y la enumeración es solo una lista de cualquier cosa. Y vamos a usar esta lista en la siguiente lección para mostrar el inventario. 14. 3.05 Creación de un evento de widget: Bien, entonces ahora en los planos dentro de la carpeta enums, ahora creamos nuestra enumeración de widgets de juego. Y lo único que tenemos en estos momentos es solo el inventario que podemos cerrar y abrir como la interfaz de usuario. Así que intentemos hacer los eventos de widget de abrir y cerrar para que realmente pueda abrir y cerrar widgets. Y por lo general de nuevo, trabajamos con UI dentro del controlador del reproductor. Entonces volvamos a los planos. Abramos nuestro controlador de reproductor. Y dentro de aquí hasta ahora hemos hecho esta interfaz de usuario principal, que agregamos a la ventana gráfica. Ahora lo que quiero que hagan es hacer clic derecho aquí y hacer un evento personalizado. Para este evento, llamémoslo abrir cerrar widgets. Así que estamos usando este evento para abrir y cerrar widgets, por ejemplo, abres y cierras el inventario, o abres y cierras el menú de pausa, o abres y cierras y lo que sea, por ejemplo, a. Sharp abres para comprar armas y así sucesivamente. Entonces por ahora, abrimos y cerramos el inventario. Entonces este evento aquí, de nuevo, recuerda, hablamos de que la interfaz de usuario necesita ejecutarse en el cliente. Entonces tenemos que hacer un nuevo evento, un nuevo evento personalizado, y llamar a este C L para clientes. Y llamemos a este widgets bajos abiertos. Y por lo general para el cliente, suelo llamarlos Cl como prefijo. Y en realidad debería haberlo hecho aquí también solo para mantenerme consistente. Y yo solo lo llamaré CL aquí también. Bien, entonces para este, recordemos en las réplicas, ejecutarlo en ser dueño de clientes y también confiable. Y a partir de este primer evento de disfraces, recordemos ejecutar este código más. Esto nunca va a correr. Entonces esta iniciativa Cl no se inicializó con solo esta abrir, cerrar widgets. Entonces ahora también ejecutamos este código. Bien, puedes compilar. Básicamente lo que quiero con este widget es que necesitamos seleccionar qué widget queremos abrir. Y luego tenemos que seleccionar si queremos abrirlo o cerrarlo. Entonces, para seleccionar qué widget queremos abrir, recuerda que hicimos esta enumeración llamada E widgets de juego. Así que aquí para este widget de abrir y cerrar, vamos a hacer clic ahora en el más aquí. Entonces estamos agregando una variable a este evento. Y seleccionemos aquí para el tipo de variable. Busquemos los widgets del juego E. Este que acabamos de hacer, esta es la enumeración. Así que vamos a hacer clic en él. Y sólo voy a llamarlo widgets. Y puedes ver aquí ahora, ahora necesitamos conectar esta enumeración con la del cliente. Entonces por aquí, en realidad voy a crear el mismo clic en el Plus. Ya está configurado para los widgets del juego. Voy a llamarlo Widget otra vez. Y ahora podemos conectarlo aquí así. ¿Bien? Entonces necesitamos otra variable. Necesitamos especificar si realmente queremos abrir o cerrar este widget. Entonces necesitamos agregar un booleano. Vamos a hacer clic en el plus aquí arriba. Vaya a seleccionar un Booleano como el tipo de variable, y llame a este abierto. Otra vez. Hagámoslo aquí abajo. Da clic en el más Collatz abierto y vamos a conectarlos aquí. Bien, entonces por ejemplo solo para mostrarlo por ti rápidamente. Entonces aquí arriba en el juego de inicio, digamos que arrastre de aquí y digo widget de bajos abiertos, este sin el cliente, entonces este de aquí. Entonces, ¿ahora puedo especificar qué widget quiero abrir? Esto se debe a que agregamos esta variable aquí abajo, especificando por ejemplo quiero abrir el inventario y recordar marcar este booleano porque quiere abrirlo. Si no quieres abrirlo así, esto significa que lo cierres a través, cerrándolo. Pinchando aquí. Significa que quieres abrirlo. Va a pasar por este evento y los resultados van a estar aquí. Bien, entonces solo voy a borrar esta por ahora. Entonces aquí abajo, lo que tenemos que hacer aquí ahora tenemos que verificar. ¿Quieres abrir o quieres cerrar el widget? Entonces, arrastrar desde este booleano, escribir B y seleccionar esta rama para este booleano es solo para mantenerse consistente. Normalmente escribo B como prefijo, y esto se hace en C plus plus para encontrar a los booleanos más rápido. Así pueden ver, aunque escribo a b, no aparece aquí, así que es un pequeño Secretos, escribiéndolo sea ante los booleanos, nombres booleanos. Normalmente hago esto. Bien, volvamos aquí. Entonces hacer una rama aquí mismo, derecha V, y hacer una rama. Ahora estamos preguntando, ¿es esto booleano verdadero o falso? Si es cierto, queremos abrir el widget. Si es falso, queremos cerrar el widget. Pero hagamos dos funciones por aquí, haciendo clic en este botón más, llamemos a ésta. Widgets, y hagamos el segundo y llamemos widgets de flujos. Volvamos al Gráfico de Eventos. Vamos a arrastrarlos hasta aquí. Y ahora solo vamos a conectarlos. Entonces, si es cierto, queremos abrir el widget. Si es falso. Si la apertura se establece en false, queremos cerrar el widget. Ahora tiene que especificar de qué widgets estás hablando. Así que de nuevo, en la entrada, voy a hacer clic en el más y seleccionar el widget de juego de EA y llamarlo aquí widgets. Y haciendo lo mismo para el widget de cerrar, da clic en el más. Y luego hay que conectar este widget a aquí. Y ahora tenemos el flujo completo. Entonces, lo que esencialmente está sucediendo ahora es si llamas a este widget de apertura y cierre, nuevamente aquí arriba, por ejemplo, dices abrir y cerrar widget. Quieres abrir el inventario así. Ahora, va a ir aquí abajo. Cuando llames así al código, va a ir aquí abajo. Sabe que has configurado este widget a inventario. Entonces se va a abrir porque esto es cierto. Entonces va a ir aquí abajo. Es verdad. Y sabe que el valor es inventario. Entonces va a abrir el inventario de widgets, así que aún no los hemos hecho. Así que bajemos aquí. Esta es la función de widget abierto aquí. Entonces para aquí, se puede arrastrar de esta enumeración. Y tenemos algo llamado switch on enumeration. Entonces enciéndalo si haces clic en él ahora. Ahora, ¿qué interruptor está encendido? Puede reproducir diferentes valores dependiendo de lo que haya seleccionado como valor para esta enumeración. este momento solo tenemos el inventario como valor, pero si tuvieras múltiples valores, tendrías múltiples pines aquí. Así podrás hacer una acción dependiendo lo que hayas seleccionado como enumeración. Así que aquí para el inventario, recuerden, estamos dentro del widget abierto. Así que sigamos aquí y digamos Crear widgets y seleccionar este de aquí. Y queremos crear el widget de inventario. Queremos abrir el inventario. Tan genial inventario de widgets. Y luego voy a hacer clic con el botón derecho remoto a una variable porque me gusta tenerlas en variables y llamar a esta inventario WB. Bien, entonces ahora tengo esta variable y quiero agregar a sus puertos así como esto. Pero ahora en realidad lo estamos agregando a la ventana gráfica. Solo una comprobación rápida antes de que realmente hagamos esto, puedes, nuevo recuerda que podemos mantener presionada la Alt y hacer clic en ella aquí también, desconectamos rápidamente. Antes de hacer esto, permítame tomar esta variable de inventario. Puede mantener presionado Control y arrastrar. Si mantiene pulsado Control y arrastra, toma este valor de variable. Si mantienes presionada la tecla Alt y arrastras, estableces esta variable manteniendo control y arrastrando esta variable, la sacas de aquí. Y ahora podemos hacer clic con el botón derecho en esta variable y convertirla en una obtiene validada. Y lo que esto hace es que en realidad estás comprobando antes de hacer esto. Estás comprobando si esto ya está creado o no porque realmente no necesitamos crearlo y luego establecer la variable si ya está establecida previamente. Entonces eso es lo que en realidad estamos haciendo. Entonces, si no es válida, si esta variable no contiene nada, lo que significa que aún no la hemos creado. Si no es válida, queremos crear esta variable. Sin embargo, si esta variable es válida, lo que significa que ya hemos ejecutado este código antes, entonces solo queremos seguir adelante y agregarlo a la ventana gráfica así como así. Entonces no necesitamos crearlo una y otra vez si ya lo hemos creado antes, correcto, así que eso fue todo para el widget abierto. El widget de cerrar es mucho más sencillo. Así que aquí de nuevo, arrastra desde aquí y di encender enumeración. Entonces dependiendo de lo que queramos cerrar, para esta instancia, queremos cerrar el inventario. Entonces volvamos a tomar el inventario aquí, haga clic derecho, conviértalo para validarlo obtiene. Y si tenemos esto abierto, lo que significa que sí, si esto es válido, lo que significa que el inventario está abierto. Queremos arrastrar de aquí y decir Eliminar de los padres. Y así es como elimino UI de las viewports. Bien, así que ahora estamos terminados y solo una explicación rápida antes de que realmente termine esto, solo para que no estemos demasiado confundidos acerca de esto. Así que déjame simplemente quitar esto por ahora. Entonces ahora hemos hecho esto, este evento personalizado aquí y se está ejecutando en el cliente. Por ejemplo, quiero abrir la jugada de inicio aquí. Quiero abrir el inventario, Digamos abrir los widgets. Entonces estamos llamando a este evento aquí abajo que hicimos. Estamos seleccionando como widget, el inventario, porque recuerda dentro de nuestra enumeración, no tenemos más valores. Digamos que agregué otro valor más adelante, lo llamé tienda de armas, por ejemplo I. Haga clic en Guardar, guardar todo. Ahora puedo ver aquí dentro de mi controlador de jugador, ahora puedo seleccionar el arma afilada. Y digamos que va todo el camino por aquí y el widget abierto. Ahora ya pueden ver que puedo hacer otra cosa con el up con una tienda de armas. Podría haber creado otro widget para el arma afilada y pude mostrar a la ventana gráfica, puedo ver lo práctico que es tener enumeraciones. Permítanme simplemente borrar este por ahora y permítanme volver. Entonces en el gráfico de eventos, digamos que llamé, en realidad solo cambia esto de nuevo a inventario. Entonces aquí llamo el inventario de apertura-cierre. Seleccioné el inventario como entrada para el widget. Y lo selecciono abrir así. Y esto significa que va a pasar por aquí. Sabe que este booleano es cierto, lo que significa que sube aquí y abre mi widget, y sabe lo que es porque lo he configurado aquí. Entonces ahora va a ir aquí y agregar la interfaz de usuario de inventario a mi ventana gráfica. Entonces es agregar esta interfaz de usuario aquí, inventario de WB a la ventana gráfica. Y este es el inventario. No se ve bien porque todavía no lo hemos terminado realmente, porque necesitamos programarlo también. Pero esto es lo que esencialmente es suceder. Si esto se establece en false. Va a ser falso aquí abajo. Y va a quitar el inventario de la pantalla. Bien, entonces ahora vamos a eliminar esto aquí arriba. No queremos abrir el inventario cuando empecemos a jugar el juego. No obstante, lo que queremos hacerlo, vamos ahora a cerrar todo aquí. Volvamos al jugador de planos y a nuestro jugador bp aquí. Entonces lo que queremos hacer es cuando hacemos clic en Abrir inventario, realidad queremos ejecutar este código aquí en nuestro controlador llamado widgets de apertura-cierre. Y queremos abrir el inventario, pulsar el botón de abrir inventario. Sin embargo, recuerden, nuestro código está dentro del controlador del reproductor y ahora estamos dentro del jugador. Entonces, ¿cómo conseguimos que este evento, que está dentro del controlador del jugador, se pueda jugar aquí y el jugador Ahora bien, si has tomado mis cursos anteriores, puedes intentar hacerlo tú mismo. Probablemente deberías ser capaz de hacerlo. obstante, si eres nuevo aquí o no me acuerdo, vamos a tomarlo en la siguiente lección porque ahora necesitamos hablar de la comunicación Blueprint, donde nos comunicamos entre dos planos diferentes. 15. 3.06 Introducción a la comunicación de planos: Hola y bienvenidos de nuevo. Entonces ahora vamos a hablar de la comunicación de Blueprint. Y qué es la comunicación Blueprint. Simplemente nos estamos comunicando entre diferentes clases de planos. Entonces aquí en esta instancia, queremos abrir el inventario. Lo que son eventos de widget de apertura y cierre está dentro del controlador del reproductor. Entonces, ¿cómo obtenemos la información de otra Clase Blueprint aquí del jugador? Entonces, lo que esencialmente tenemos que hacer primero, necesitamos obtener la referencia para este controlador de reproductor. Voy a eliminar esta cadena de impresión hola, que simplemente la imprime en la pantalla. Ahora bien, lo que tenemos que hacer es hacer clic con el botón derecho aquí y escribir get controller. Y lo que esto hace es que devuelve el controlador para este actor. Entonces se está poniendo, obtienes este controlador para pantalla aquí. Ahora necesitamos especificar de qué controlador estás hablando. Este es solo un controlador general. Recuerda, hicimos nuestro personalizado aquí. Ahora tenemos que decirle al motor que en realidad estamos hablando de un controlador de disco específicamente. Entonces aquí es donde entra la comunicación. Es algo que se llama costo conducir desde aquí y decir arrojado a. Y ahora necesitamos escribir el nombre del plano aquí del controlador. Entonces vamos, digamos PC town. Entonces este de aquí le costó a PC4 zona alta aquí y el disparado, vamos a conectarlo aquí. Ahora como este controlador aquí ahora puedo acceder a todo lo que hay dentro de este controlador de reproductor, incluyendo estas variables también. Entonces, así como estas funciones aquí. Entonces esto es lo que comunicación Blueprint es muy, muy sencilla. Obtienes el controlador. Esta es sólo la referencia general. Y luego especificamos qué controlador estás hablando específicamente? Estoy hablando de este PC abajo como éste. Ahora podemos decir que quiero ejecutar este evento llamado Open close widget. El jugador puedo arrastrar desde aquí y decir abrir cerrar widget, este de aquí. Ahora en realidad puedo hacer esto. Entonces, por ejemplo, para el inventario, quiero abrirlo. Y si compila y hago clic en Reproducir, ahora puedo hacer clic en I en el teclado y puedes ver nuestros inventarios realmente abiertos. Ahora podemos hacer click de nuevo porque no va a cerrar. Todavía tenemos que programar esa lógica. Así que vamos a cerrarlo. Entonces esta es básicamente la comunicación Blueprint, muy, muy fácil. Sin embargo, hay un pequeño problema con la fundición. casting hace referencias duras y qué tan duras deben cargarse las referencias cada vez que se carga el juego. Entonces esto hará que tu juego sea más lento. A veces ves juegos hay muy, muy lentos cuando cargan el juego. Y podría ser porque lo han pasado a muchas cosas en su juego. Imagina que tu juego puede ser muy, muy grande cuando termines tu juego. Y a lo mejor tienes como 100, 100 artículos te están costando dos o 100 planos te están costando dos. Y todos estos están creando referencias duras, lo que luego ralentiza tu juego. No estoy diciendo que nunca debas usar esto, pero debes evitar usarlo siempre que puedas. Y en este caso, en realidad podemos evitarlo usando algo llamado Interfaces Blueprint. Entonces, sigamos adelante y la siguiente lección y hablemos de Interfaces Blueprint. 16. 3.07 Interfaces de plano: Ahora que ya hemos hablado de costos, hablemos ahora de Interfaces Blueprint. Entonces este tema suele ser un poco difícil para los principiantes, pero voy a tratar de explicarlo lo mejor que pueda. Pero ahora cerremos todo aquí y aquí y la carpeta Blueprints, hagamos clic derecho y vayamos a planos y hagamos éste llamado Interfaz de Planos . Y normalmente lo doy a int como prefijo. Y para éste, llamémoslo el nombre del plano al que quiero hacer referencia. Entonces quiero hacer referencia a este controlador negro para obtener mi evento de widget de apertura y cierre. Entonces llamemos a este controlador de una capa. Ahora también voy a hacer clic derecho y hacer una nueva carpeta llamada Interfaces solo para permanecer consistente aquí y arrastrar esto a esta carpeta. Y déjame ir a la carpeta, abrir mi Interfaz de Blueprint. Entonces, qué Interfaces de Blueprint puedes ver aquí. Muy, muy sencillo. Realmente no puedo hacer nada en esta gráfica. No puedo mover nada ni hacer nada. Y en realidad no se supone que trabajemos aquí. Lo que se supone que debemos aquí a la derecha, podemos crear funciones. Entonces esta primera función, puedes hacer click sobre ella. Puede hacer clic en F2 en el teclado para cambiarle el nombre. Y voy a llamarlo get's layout Controller reference porque esto es lo que estoy tratando de hacer. Aquí en la salida. Vamos a hacer clic en esto y establecer una variable aquí. Ahora, tienes que seleccionar a qué quieres hacer referencia. Quiero hacer referencia a mi controlador jugador llamado EC Hook Town. Entonces seleccionándolo aquí. Y ahora vamos a llamarlo controlador de reproductor. Bien, entonces esto es en realidad por ahora. Así que ahora que hemos creado esta función obtiene control de capa o referencia, o tratamos de obtener la referencia para este PC folk term player controller. Bien, ahora cerremos esta interfaz y volvamos a los planos. Y tenemos que ir dentro de este controlador de reproductor y agregar nuestra interfaz que acabamos de hacer. Y lo hacemos haciendo clic en la última configuración. Y por aquí en las interfaces, vamos a dar click aquí y buscarlo termina controlador de capa, este es el que acabamos de hacer. Entonces haciendo clic en él aquí. Ahora, vamos a compilar. Si haces esto ahora podemos ver aquí tenemos una pestaña llamada interfaces. Y si haces clic en la flecha, verás tu interfaz. Un error muy pequeño que mucha gente hace aquí. Si vuelves a la interfaz, tienes que recordar hacer clic en compilar. De lo contrario no verás esto aquí abajo cuando agregues tu interfaz. Así que recuerda hacer clic en compilar. Muy, muy importante para compilar siempre tu código. Así que ahora aquí en la interfaz ya podemos hacer doble clic sobre ella. Para ello, para esto aquí, para esta referencia de esta variable, podemos arrastrar desde aquí y escribir self. Básicamente lo que esto está pidiendo, esta variable es que necesitamos especificar qué es esta variable de pueblo EC ****, ¿qué es esta? Y lo que básicamente estamos haciendo aquí es que estamos arrastrando aquí y diciendo yo mismo. Porque recuerden, ya estamos en este plano, el controlador del jugador al que estamos tratando de hacer referencia. Así que básicamente estamos diciendo que esta referencia variable es self, es decir, lo que sea lo que estemos dentro en este momento, que es esta clase de blueprint aquí. Entonces ahora lo que podemos hacer es volver a los planos, al jugador y al jugador bp. Así que volvamos aquí. En lugar de casting, solo eliminemos esta parte. Aquí tenemos el controlador general. Entonces en lugar de disfraz, ahora podemos arrastrar y decir obtiene su referencia de Controller porque esto es lo que realmente creamos en esta función aquí. Así que arrastra aquí y di que es jugador, referencia de controlador, y tiene que decir mensaje al final, lo que significa que proviene de una Interfaz de Blueprint. Entonces esta es una función de Interfaz de Blueprint, dando click sobre ella aquí. Y ahora podemos conectarlo aquí y desde aquí , igual que antes, ahora podemos acceder a todo lo hay dentro de este controlador de capa. Y ahora podemos decir Open lows widget así. Y ahora está funcionando a plenitud. Puedes ver si hago clic en play y hago clic en I en mi teclado, abre el inventario igual que antes, y estamos evitando el ayuno que creó una referencia dura, lo que puede ralentizar nuestro juego. Entonces esto es mucho mejor que hacer. Así que solo voy a pasarlo rápidamente porque sé que es un tema confuso para algunos y también me fue confuso hace un tiempo cuando recién comencé. Así que volvamos aquí. Creamos una Interfaz de Blueprint. Dentro de aquí. Y dentro de esta Interfaz de Blueprint, acabamos de hacer una función llamada getline Controller reference, donde agregamos cualquier referencia de controlador de jugador a la que queramos hacer referencia. Y queremos hacer referencia a éste específicamente. Ahora lo que hicimos es que fuimos a ese controlador y agregamos la interfaz y los Ajustes de Clase. Lo agregamos aquí. Esto hizo que apareciera esta función de interfaz. Y lo que hicimos aquí, ahora tuvimos que especificar si solo desconecto esto aquí, esta variable de controlador de pueblo de PC ****. Si no haces esto, simplemente no sabe de lo que estás hablando. Esto. Recuerda que si lo pones así, significa que esta variable está vacía. Y lo que sea que intentes hacer aquí, te va a dar un error. Entonces si hago clic en jugar aquí y hago clic en I, en mi teclado, no pasa nada. Y si salgo, te va a dar un error diciendo que x es none access none solo significa que esta variable está vacía. No sé a qué intentas acceder o a lo que intentas hacer es esta variable, está vacía. No tengo ninguna información. Es por esto que hay que decir self, porque básicamente estamos definiendo esta variable. Estamos diciendo que este controlador de jugador del que estamos hablando es uno mismo, lo que significa este plano. Sea cual sea el plano en el que nos encontremos, esta autorreferencia es ésta. Entonces el factor PC, Esta es la forma en que estamos haciendo referencia al controlador del reproductor. Y ahora dentro del reproductor, ahora podemos tomar esta función Blueprint Interface. Y sabemos cuál es la variable porque hicimos esta autorreferencia aquí. Y a partir de ahí ahora podemos acceder a todo lo que hay dentro de los controladores de esta capa para que incluso podamos acceder a este WB hecho si quisiéramos. Puedes ver aquí, si arrastro desde aquí y digo WB main, en realidad también puedo obtener esa variable. Bien, así que esto fue para el plano y las superficies. Entonces ahora podemos abrir el inventario. Pero sigamos adelante en la siguiente lección y de hecho finalicemos esto porque también necesitamos cerrar el inventario. 17. 3.08 Muestra el inventario: Bien, entonces el paso final para abrir y cerrar el inventario. este momento el problema es que cuando hacemos clic en I en el teclado, sigue abriendo el inventario, así que necesitamos cerrarlo también. Voy a volver al controlador del reproductor. Y dentro de aquí, hagamos una nueva variable, un booleano llamado es, llamémoslo inventario está abierto. Ahora vamos a controlar la apertura, cerrando por este booleano aquí. Entonces aquí en el widget abierto, entremos aquí. Entonces, ¿por qué no abrimos el inventario y agregamos esto a la ventana gráfica Tomemos esto aquí. Y recuerda que puedes sostener Alt, arrastrarlo y configurarlo aquí para establecer la variable. Sí, así que si quieres arrastrarlo y seleccionar Establecer aquí también. Entonces vamos a establecer este booleano en true. Entonces el inventario está abierto, eso es cierto. Y cuando cerramos el inventario, así que si vuelves al Gráfico de Eventos y haces clic en el widget Cerrar, vamos a establecer esto en false. Bien, entonces ahora es falso. Y volvamos al jugador de aquí. Entonces dependiendo de si es verdadero o falso, esta, esta variable aquí, entonces queremos abrir o cerrar el inventario. Recuerda, ya estamos haciendo esta comunicación de Blueprint Interface con el controlador del reproductor para que podamos acceder a lo que esté dentro de este controlador negro, incluyendo esta variable que acabamos de hacer. Ahora podemos conducir desde aquí y decir ¿Está, los inventarios están abiertos aquí? Podemos seleccionar el booleano aquí para que podamos obtener el valor de esto. Y ahora podemos hacer una rama. Entonces rama derecha. Entonces, si el inventario está abierto, queremos seguir adelante y cerrar el inventario. Vamos a copiar y pegar este de aquí. Y si el inventario no está abierto aquí, vamos a abrir el inventario. Arrastrémoslos aquí, conectemos esto a los objetivos. Y si quieres hacerlo mucho mejor, puedes simplemente hacer doble clic en la línea aquí y puedes hacerla más organizada. Bien, entonces lo que esencialmente sucede aquí es que estamos preguntando, ¿está abierto el inventario? Si ya está abierto cuando hacemos clic en el botón, entonces queremos cerrarlo. Si hacemos clic en el botón y el inventario no está abierto, entonces realmente queremos abrir el inventario. Y vamos a guardar todo. Vamos a hacer clic en Reproducir. Y ahora vamos a dar click en I para abrir el inventario. Y voy a hacer click en I otra vez, y se puede ver que lo cierra. Por lo que al hacer clic en el ojo lo abre. Podemos de nuevo, lo cierra. Recuerda que también encontré que ser clave si presionas sobre la tecla B. Y esto sólo está aquí en la capa de planos. Aquí si haces clic en los contextos de mapeo, si también has dicho el BQ para el inventario, dependiendo de qué teclas hayas configurado, puedes presionar esas teclas aquí y el reproductor para abrir el inventario. Entonces ahora está funcionando como debería. 18. 4.01 Creación de la hoja de artículo base: Ya estamos listos para saltar a los artículos. Y la razón por la que hacemos los artículos de arranque primero antes de codificar el inventario, es porque realmente necesitamos artículos que necesitan entrar en las ranuras de inventario. Así que sigamos adelante y creamos los artículos antes de continuar con el inventario en la carpeta blueprint, Ahora hagamos clic derecho aquí y hagamos una nueva carpeta. Llamemos a esto artículos. Y dentro de aquí, vamos a hacer clic derecho. Ir a la clase Blueprint. Y puedes hacer un actor aquí porque los artículos son solo actores estáticos dentro del nivel. Por ejemplo, esta planta podría haber sido un elemento. Esta herramienta podría haber sido un elemento. Entonces estos son solo actores. Si lees aquí dice que un actor es un objeto que se puede colocar o responder en el mundo. Entonces, seleccionemos al actor y llamémoslo BP item base. Así que normalmente creo una clase base si quiero crear múltiplo de lo mismo. Entonces, si quiero crear varios elementos, estoy creando una clase base. Y luego a partir de esa clase base, puedo crear los ítems. Esto se llama planos infantiles, pero hablemos de eso en la siguiente lección. Por ahora, quiero que entres a la base de artículos. Y dentro de aquí, sigamos adelante y agreguemos un componente. Y busquemos una malla estática. Y una malla estática es solo para que podamos agregar nuestros artículos que tenemos en nuestra carpeta. Y llamemos a esto un ítem. ¿Bien? Y puedes ver aquí para la malla estática, podemos agregar una malla, por ejemplo podemos agregar el plátano como elemento y así sucesivamente. Pero ahora mismo estás en la clase base y en realidad no queremos asignar nada aquí. Lo vamos a hacer más tarde. Solo quería crear este Item, componentes de malla estáticos. Entonces agreguemos otro, haciendo clic en este ítem. Y luego vamos a sumar, y vamos a agregar una colisión. Agreguemos una esfera de colisión, esfera de colisión seleccionada. Voy a llamarlo esfera de colisión. Y la razón por la que estoy agregando este es porque necesitamos interactuar con el ítem. Así que imagina si vamos a Artículos de Activos, imagina si este ítem está en el mundo, entonces necesitamos una esfera de colisión. Porque necesitamos saber cuándo el jugador está colisionando realmente con este ítem para que podamos perderlo o no. Eliminemos esta por ahora. Y para el artículo, volvamos aquí. Volvamos a la colisión aquí. Entonces para la colisión, para este ítem, no quiero que tenga colisión, así que eliminemos generar eventos de superposición. Vamos a quitar esta. Y digamos aquí en el preset de colisión, sin colisión. Vamos a compilar. Ahora volvamos a la esfera de colisión. Ahora para la esfera de colisión en la parte superior, sólo voy a hacer el radio a 100s. Para que puedas mirar y ver aquí si vuelves a los artículos y bajas los basados en objetos al nivel, puedes ver que este es el radio en el que el jugador puede interactuar con el objeto. Entonces, si lo aumentas, ese jugador puede interactuar con el objeto cuando el jugador esté dentro de esta esfera. Así que solo podrás ajustar el radio como quieras para tu juego. Yo solo quería ponerlo para al 100 ahora mismo. Voy a borrar este en el nivel y de nuevo bajar a colisión. Y dentro de aquí, queremos generar eventos de superposición, así que eso es correcto. Esta también es correcta. Y por aquí en el preset de colisión, solo quiero que mi jugador interactúe con esta esfera. No quiero que otra cosa lo haga. Entonces sigamos adelante y digamos, digamos cliente aquí arriba y el preset de colisión. Voy a ignorar todo excepto mi estanque, que es mi capa. Vamos a compilar. Y antes de que nos olvidemos, realidad vamos a subir aquí en la base de artículos BP en los valores predeterminados de clase. Y aquí arriba, si te desplazas hacia arriba, tienes que hacer click en éste porque recuerda que estamos en multijugador y replica solo significa, nuevo, igual que antes, replicas la información al cliente. Porque aquí, cuando juegas como servidor y aquí tenemos al cliente. Entonces, si no replicas el plano, entonces el cliente no podrá verlo. Sólo el servidor, que es este tipo de aquí. El servidor podrá ver el ítem, pero los clientes, todos los clientes lo conectan a ese servidor, no podrán ver el ítem. Esto es lo que significan las réplicas. Se trata de replicar la información del servidor y enviarla a los clientes puedan ver esa información. Ahora, queremos que los clientes vean este artículo. Entonces vamos a hacer clic en réplicas, y también vamos a replicar el movimiento del elemento en caso de que el elemento se mueva. Y eso fue todo para la base de artículos. Entonces, sigamos adelante y cerremos esto y pasemos a la siguiente lección. 19. 4.02 Introducción a los planos de niños: Entonces ahora que hemos creado nuestra base de artículos, hablemos ahora de planos infantiles. Entonces volvamos a la carpeta Blueprints y vayamos a los artículos. Ahora bien, para esta base de artículos aquí, en la razón por la que creé una clase Blueprint de elemento base es porque queremos crear planos infantiles a partir de esta. Y voy a explicar lo que es eso tan bien, este puedes hacer clic derecho aquí arriba, puedes ver algo que se llama clase Create Child Blueprint. Entonces haciendo clic en éste, y yo sólo voy a llamarlo algo aleatorio. Entonces ahora tenemos una clase Child Blueprint y puedes pasar el mouse sobre ella y dice que la clase padre es la base de ítems BP. Entonces, ¿qué significa eso? Eso significa que si hago alguna edición en la base de artículos, heredará estas ediciones y las aplicará a todos los hijos. Así que permítanme hacer clic de nuevo y crear otra clase de Blueprint hijo. Solo asegúrate de que sea desde el artículo basado en que lo estás haciendo. Así que haciéndolo aquí, y solo voy a llamarlo algo aleatorio otra vez, haga clic con el botón derecho en la tasa base del ítem otro niño y llamándolo algo otra vez, ¿de acuerdo? Ahora tenemos tres hijos. Tenemos éste, éste, y éste. Y son hijos de la base de artículos. Entonces ahora si voy dentro de una de las Clases de Planos Hijos, puedes ver que ya hereda el ítem Componente de Malla Estática que hicimos en la base del ítem y también hereda la esfera de colisión. Recuerda que estos son componentes que creamos dentro de la base de artículos. Así que ahora en el artículo basado, si creo algo, por ejemplo quiero hacer una variable y decir, es esta burbuja Troy o lo que sea, algo aleatorio? Se trata de Troy Abel y hago clic en compilar. Ahora bien, si hago clic en alguno de los planos infantiles, ya se puede ver en los últimos valores por defecto. Ahora puedo ver que esta variable se destruye capaz, aunque no tengo ninguna variable dentro de aquí. Esto se debe a que está heredando todas las cosas que haces dentro de la base de artículos. Así que ahora en realidad puedo decir si está destruido o chiflado. Y esto es muy útil porque ahora todas las Clases de Planos Infantiles, tienen la misma funcionalidad. Puedo ponerlos para que destruyan burbujas o nueces. Por lo que hacemos esto para que la velocidad de desarrollo de tu juego sea más rápida. Entonces en vez de ir en cada uno y hacer un se destruye doble booleano entrando aquí, haciendo se destruye un booleano. Entonces, en lugar de hacerlo 100 veces, podemos hacerlo una vez dentro del plano padre aquí. Y entonces todos los hijos heredarán esos ajustes. Lo mismo ocurre con los personajes. Digamos que estás creando muchos skins, muchos skins de jugadores. Obviamente quieres crear una clase principal, como un padre, una clase de blueprint para el skin, y luego crear clases de blueprint child a partir de esa clase padre skin base. La razón por la que vuelves a hacer esto, si quieres cambiar una configuración específica para todos los 100 skins que hiciste, solo puedes hacerlo una vez en la clase Blueprint padre, la, la base aquí, y heredará su, todos estos hijos también la heredarán. Bien. Entonces eso fue todo. Muy, muy básico. Entonces déjame seguir adelante y eliminar los de aquí. Y con ese conocimiento, ya estamos listos para crear todos los artículos. 20. 4.03 Creación de los artículos: Bien, sigamos adelante y creamos todos los artículos. Permítanme hacer clic derecho en la base del ítem. Creó la clase Child Blueprint. Y para el primero, lo voy a llamar BP banana. Y los artículos que vamos a hacer de nuevo, puedes hacer clic en los activos aquí arriba, artículos y puedes verlos aquí. Estos son todos los artículos que queremos hacer para que podamos saquear y tener en nuestro inventario. Déjame volver a los artículos. Haga clic con el botón derecho en el elemento de nuevo, y vamos a crear el sabor BP. Vuelva a hacer clic derecho con otro niño, cuchillo EP , otro, y llamemos a esta manera BP, océano. Otra nube de planos. Solo asegúrate de que la clase padre sea base de artículos. Asegúrate de no hacer clic en nada malo aquí. Entonces la tasa base del ítem, plano, el bp cumple, y el último son las pociones de resistencia. Así que aquí se titula VP stamina ocean. Bien, ahora que tenemos todos los artículos, vamos a abrirlos todos aquí arriba. Entonces la palanca de plátano, manipulación de cuchillo, carne y aguante, pociones. Pero vayamos primero al plátano, haga clic en el ítem. Y aquí en la malla estática hay que asignarle la malla estática. Entonces sólo voy a buscar aquí arriba el plátano seleccionado aquí, y aquí está. Bueno ahora se agrega aquí como el ítem. Bien, vamos a compilar. Vayamos a la cuchilla como un artículo. Adelante y selecciona la cuchilla. Sólo búscalo, compila. Ahora para el artículo de cuchillo y busca cuchillo. Esos son el mismo proceso una y otra vez. Vayamos al elemento de acción de la menopausia, busquemos poción señorial, compilemos. Ir al siguiente. Artículo cumple compilar y el último, pociones de resistencia y haga clic en el ítem Malla Estática. Sigue adelante y busca resistencia y selecciona este movimiento de resistencia. Ahora, hagamos clic en Archivo y Guardar todo por si acaso. Bien, entonces eso fue todo. Y antes de terminar esto, en realidad quiero hacer una cosa más. Cerremos todo. Quiero crear una variable llamada item name y vamos a usar esto más adelante. No vamos a usar esto ahora. Pero nuevamente, recuerda, no tienes que entrar en todas y cada una de estas Clases de Planos Infantiles y crear una variable llamada name. Simplemente puedes ir a la base de artículos. Y en realidad eliminemos este por eso, solo hicimos eso también para ver la herencia. Así que vamos a crear otra variable ahora. Vamos a llamarlo nombre del elemento. Y para el nombre del elemento, el tipo de variable, vamos a convertirlo en una cadena. Haga clic en compilar. Y como saben, una cadena es solo una línea de texto así que en realidad podemos darle un nombre de elemento. Y tal vez si te olvidaste, ¿ por qué no elegimos textos en lugar de una cadena? La razón por la que elegimos una cadena es, recuerda, un texto es lo mismo excepto por, puedes ver que esta bandera aparece cuando eliges texto. Y esto se debe a que el texto es localizable y esto significa que puedes traducir lo que escribas aquí a otros idiomas aquí en Unreal Engine. Entonces en ventana, creo que lo es, o en realidad está en herramientas. Aquí puedes ver que tenemos algo llamado tablero de localización. Y dentro de aquí puedes traducir tu juego a diferentes idiomas, por ejemplo, alemán, japonés, chino, árabe, lo que sea. Puedes traducir esas variables de texto. Sin embargo, si eliges una cadena y querrás traducir tu juego más adelante, no podrás hacerlo. Tienes que seleccionar textos para traducir ese texto que quieras escribir aquí. Entonces no quiero traducir nada. Este nombre de cadena en realidad solo va a ser utilizado como ID. Así que vamos a guardar todo. Yo sólo quería ser una cuerda. Ahora hemos creado este nombre de elemento dentro de la base de elementos. Así que ahora cada niño aquí tiene este ítem llamado variables. Entonces voy a abrirlos todos . En la primera. Puedes ver aquí, dice nombre del artículo. Y si solo abro el editor de planos completo para mostrártelo, y la clase por defecto para este hijo de blueprint, puede ver la variable de nombre del ítem en sus pares. Ahora para el nombre del artículo aquí podemos escribir banana. Esta es la compilación de banano y para el tallo y una poción, llamémoslo aguante, océano. Así como esto para la carne, llamémoslo cumple. Y para la menopausia en realidad estímulos porción aquí. Y para los hombres y la poción, llamémoslo manera océano. Y para el cuchillo, haga clic en los valores predeterminados de clase, ¿verdad? Navaja, compilar. Y para la cuchilla, vamos a escribir palanca. Bien, y recuerda que esta vista aparece con este botón de aquí arriba. Esto se debe a que la, La clase Blueprint está vacía y por eso se está mostrando así. Bien, entonces ahora tenemos asignados todos los nombres. No lo vamos a usar ahora, pero vamos a usarlo muy, muy pronto y verás por qué hice esta variable de nombre. Cerremos todo ahora y pasemos a la siguiente lección. 21. 4.04 Introducción a las estructuras: Bien, ahora que hemos creado todos los artículos, en realidad estamos listos para crear la información de los artículos. Entonces el nombre del artículo, la miniatura, así la imagen que aparece dentro del inventario cuando aludes al artículo, la categoría del artículo, y así sucesivamente. Hasta que toda la información para un solo ítem, necesitamos definir toda la información. Entonces, antes de hacer esto, en realidad podemos hacerlo dentro de las estructuras. Vamos a los planos. Y aquí Hagamos clic derecho y hagamos una nueva carpeta. Vamos a llamarlo. Se puede llamar a las estructuras, pero normalmente solo lo llamo estructuras. Eso depende de ti. Dentro de aquí. Vamos a hacer clic con el botón derecho. Ve a planos y selecciona éste llamado estructura o éste. Yo suelo usar S t como prefijo para estructuras. Y vamos a llamarlo item info porque queremos crear la información para el ítem. Haz doble clic sobre él y verás que así es como se ve la estructura. Entonces una estructura es solo una colección de variables. Entonces, en lugar de ir a los artículos y por ejemplo aquí en la base de artículos. En lugar de ir aquí y crear variables, por ejemplo si el artículo es apilable, o tal vez quieres tener la miniatura del elemento, o tal vez quieres tener la categoría para los ojos que puedas ver. llega a muchas Aquí llega a muchas variables y a veces se vuelve desordenado, así que normalmente no hacemos esto. Déjame borrarlos aquí. Pero puedes hacer es que puedes crear una estructura dentro de aquí. Se pueden crear todas las variables. Por ejemplo, yo quería el nombre del artículo, quiero por ejemplo el valor de la moneda para este artículo si quiero venderlo y puedes elegir de qué tipo es esta variable, por ejemplo para las monedas, puedo seleccionar un flotador, y para el nombre puedo seleccionar tal vez un texto porque quiero traducirlo más adelante. Ahora tenemos todas estas variables dentro de una estructura. Así que lo genial ahora es si voy al artículo basado por ejemplo I. Puedo hacer una nueva variable aquí como el tipo de variable. Puedo escribir el nombre de la estructura. Entonces SC, info del artículo y puedo seleccionarlo aquí y puedo guardar. Y ahora puedes ver si hago clic en mi variable. Ahora tengo toda la información aquí para este ítem. Para que pueda tener la información del artículo dentro de esta estructura. Y si hago clic en uno de mis planos hijo, puedo ver aquí en los valores predeterminados de clase. Ahora puedes ver toda esta información, el nombre del artículo, el valor de la moneda y las variables que agregues. Así que muy chulo. Las estructuras son solo una colección de variables que define dentro de aquí. Bien, así que vamos a eliminar todo esto por ahora, y vamos a eliminarlo aquí del basado en artículos porque vamos a crear algo mucho más genial que esto. Déjame guardarlo todo. Ahora que sabes lo que es una estructura, vamos a seguir adelante y crear la estructura de información del artículo. 22. 4.05 Estructura de información de artículo: Muy bien, así que sigamos adelante y creamos la estructura de información del artículo. Vamos a hacer clic en estructuras. Ahora abramos la estructura de información del ítem. Y dentro de aquí lo que queremos es el nombre del artículo. Vamos a crear una nueva variable. Queremos una miniatura así la imagen que aparece dentro del inventario cuando aludimos a Dyson. Y el tipo aquí es una textura 2D, lo que solo significa una imagen. Y selecciónelo aquí, referencia de objeto. Y hagamos una nueva variable. Y queremos el e.g queremos una descripción del artículo. No tienes que hacerlo. Depende de qué juego estés creando. Algunos juegos no tienen una descripción, pero vamos a agregarlo aquí. No sé si lo necesitamos o no, pero tal vez lo necesitemos. Así que vamos a crear una descripción para el artículo. Podemos establecer la categoría para el artículo. Así que vamos a elegir este como el tipo de variable. De hecho estoy checando me olvidé de aquí. Entonces en las enumeraciones están aún no lo hemos creado. Entonces en la enumeración es realmente puedes crearlo si quieres como el ejercicio en la enumeración, quiero una enumeración con las categorías para el ítem. Entonces tenemos la categoría armas, comida y pociones pueden seguir adelante y crearla y agregarla a la estructura si así lo deseas. Ahora intentemos hacerlo juntos ahora, voy a hacer clic derecho aquí, ir a planos y seleccionar enumeración. Esta categoría de un artículo. Voy a abrirla y dentro de esta lista. Así que recuerda que una enumeración es solo una lista de elementos. Entonces aquí quiero una lista de categorías. Voy a decir armas. El siguiente que voy a agregar es comida, y el tercero son océanos. Entonces tenemos estas tres categorías de artículos. Y volvamos ahora a la información del artículo para la categoría, voy a seleccionarla aquí y decir categoría de artículo E. Entonces como se llame a la enumeración seleccionada aquí. El siguiente, voy a decir que enviaría clase. Y la clase de artículo es solo para que podamos generar el artículo en el mundo si lo dejamos caer del inventario. Entonces, seleccionémoslo aquí y busquemos la base de artículos. Recuerda que hicimos la base del artículo. Ahora esta es la clase de ítem seleccionada aquí y selecciona la referencia de clase. Muy importante. La referencia de clase, a diferencia de la referencia de objeto, es que la referencia de clase se usa cuando se generan cosas. Entonces queremos generar el artículo cuando lo dejamos caer del inventario, así que necesitamos la clase del mismo. Ahora agreguemos otro y llamemos que está en sumable. Entonces, ¿podemos beber o comer este artículo? Y booleano, esto es sólo un sí o no preguntas. Entonces es un booleano y el otro es apilable, entonces es este artículo apilable en nuestro inventario, ¿podemos tener dos artículos y la misma ranura, tres artículos y así sucesivamente? Y el último, voy a decir tamaño Max Stack. Entonces, ¿cuántos artículos podemos tener en una ranura de inventario? Por ejemplo, podemos tener 99 plátanos antes de crear otro, otro stack. Entonces todo este tamaño Max Stack es que es solo un entero. Muy bien, ahora hemos terminado con la información del artículo. Y en lugar de agregar la información del ítem al hielo y a la base como variable, en realidad voy a hacerlo a través de una tabla de datos. Para que puedan ver aquí, no me estoy reteniendo con el conocimiento. Estoy tratando de mostrarte cómo lo haríamos profesionalmente en un juego. No quiero hacerlo de la manera fácil. De hecho, sigamos adelante y aprendamos sobre las tablas de datos y te mostraré una manera muy genial de cómo agregar la estructura. 23. 4.06 Introducción a las tablas: Bien, ahora sigamos adelante y hablemos de tablas de datos. Entonces, en la carpeta Blueprints, hagamos clic derecho, hagamos una nueva carpeta, y llamemos a esta tablas de datos. Dentro de aquí, vamos a hacer clic derecho, ir a miscelánea. Y aquí podemos seleccionar algo llamado tabla de datos. Puedes ver aquí tabla importante de hoja de cálculo es lo que también se llama. Para que lo puedas hacer click aquí. Y ahora tenemos que seleccionar qué estructura desea utilizar. Entonces necesitas una estructura antes de que podamos hacer una tabla de datos. Recuerda que ya hicimos nuestra estructura en la lección anterior. Así que ahora podemos seguir adelante y seleccionar nuestra estructura de información del artículo. Y ahora podemos dar click en OK. Para esta tabla de datos, podemos llamarla d t item info, data table, item info. Ahora vamos a abrir esta tabla de datos. Y así es como se ve, muy, muy simple. Es solo mostrarte información. Puedes ver todas tus variables que has creado dentro de tu estructura aparecen aquí. Y ahora mismo está vacío. Así que puedes hacer clic en Agregar si quieres, y podrás ver qué sucede cuando haces clic en agregar. Aquí se agregará un ítem a la tabla de datos. Para que puedas ver si sigo agregando artículos, voy a seguir agregando artículos aquí abajo. Lo que puedes hacer aquí, haciendo clic en el primero, por ejemplo, puedes ver por cada elemento de tu juego, puedes definir el nombre del mismo, la miniatura del mismo. Podemos definir la descripción del artículo, la categoría para él, el vidrio, por ejemplo, es el plátano, y así sucesivamente. que pueda ver, puede definir información para cada elemento y puede tenerla de una manera estructurada agradable dentro de una tabla de datos. Ahora esto es básicamente, esto es lo que es una mesa. Simplemente contiene información. Entonces tenemos la estructura. Y con esa estructura, hacemos una tabla de datos para que por cada elemento realmente podamos especificar información aquí. Y vamos a hacerlo de una manera mucho más fácil. Por lo general no lo usamos dentro de aquí. Entonces, en lugar de tablas Delta, no solemos entrar aquí y escribir el nombre, así como la miniatura y así sucesivamente. Te voy a mostrar una manera más completa de hacer esto. Así que sigamos adelante y simplemente haga clic en Eliminar para cada uno de ellos aquí, eliminar, eliminar, eliminar. Entonces ahora vuelve a estar vacía. Y vamos a guardar todo. Vamos a cerrarlo y pasemos a la siguiente lección y te mostraré cómo podemos agregar la información para el artículo. 24. 4.07 Tabla de datos: Bien, entonces ahora quiero que entres dentro de Google Drive. Si no tiene uno, por favor haga una cuenta. O puedes usar Excel si tienes Excel, pero normalmente es la forma más fácil solo de usarlo dentro de aquí, que Google Sheets, cuando tengas una cuenta aquí en Google, vaya a Google Drive, que puedes hacer aquí arriba. Y en realidad aquí arriba. Y puedes seleccionar Drive. Cuando estés dentro de Google Drive, simplemente haz clic derecho aquí y haz un nuevo Google Sheets. Y las hojas de Google, solo lo voy a llamar tablas de inventario RPG, si acaso tenemos un múltiplo. Entonces ahora tenemos este aquí, y sólo voy a hacerlo un poco más bonito. Depende de ti cómo quieres diseñar el tuyo. Bien, así que ahora he estilizado el mío. Yo solo uso este en el centro. Yo uso este y uso este de aquí. ¿Bien? Entonces otro muy importante, solo depende de ti cómo quieres diseñarlo. Ahora, aquí arriba, queremos escribir una identificación. Así que aquí arriba sólo voy a hacer que todos ellos se desplacen. Tenemos un ID y ahora realmente tienes que escribir cada variable que hayas escrito aquí en tu información de elemento de estructura. Entonces tenemos una identificación, hay que tener esto para empezar. Y luego tenemos el nombre, luego tenemos la miniatura, tenemos la descripción. Y recuerda escribirlas exactamente como las has escrito aquí en tu estructura. Por ejemplo, si tienes un espacio aquí, también tienes que tener un espacio aquí. Entonces escríbelos exactamente como los has escrito en la categoría de estructura. Tenemos la pérdida de artículo, tenemos el está encendido al móvil y tenemos el es apilable y el último, tamaño Max Stack. Bien, entonces ahora los tenemos a todos aquí. Y para el ID, la razón por la que necesitamos un ID es porque más adelante en el juego, le decimos al motor que le damos un ID aquí y el ID, si vuelves a tu base de artículos, recuerda en la base de artículos, creaste esta variable de nombre de elemento. Entonces esto en realidad será RID aquí. A partir de esto, en realidad vamos a decirle al motor. Entonces por ejemplo para este plátano, vamos a decirle al motor de qué fila vamos a tomar esta información. Entonces por ejemplo, si tienes la idea del plátano, va a tomar esta información aquí. Sabe que hay que mirar esta fila donde están las ideas del plátano. Y conoce la miniatura del plátano y la descripción y así sucesivamente. Es por eso que hicimos el nombre de este artículo y escribimos el nombre del artículo en cada plano infantil. Bien, así que en realidad necesitamos agregar cada artículo aquí para que no lo recuerde exactamente. Entonces déjame minimizarlo y abrir la hoja de Google así. Y ahora podemos escribir palanca banana. Luego el siguiente es Cuchillo, manera, océano y carne y resistencia, océano. Y recuerda escribir la identificación exactamente como escribiste el nombre del artículo aquí para cada uno de tus artículos. Así que recuerda escribir lo mismo aquí. Entonces en realidad sabe qué información debe extraer. Entonces, ¿de qué fila debería extraer? Voy a copiar todas esas y pegarlas. Aquí están las miniaturas. Puedes ir a la interfaz de usuario y a los iconos. He incluido algunas de las miniaturas para ti. Entonces para el plátano, puedes hacer clic derecho, ir a Copiar referencia. Y ahora puedes ir aquí y pegar esta referencia. Entonces así es como se ve. Se ve raro, pero ahora el motor sabe dónde está este icono banana porque has especificado la ubicación del mismo. Yo haré lo mismo por la cuchilla. Puede hacer clic con el botón derecho en la referencia inteligente de API. Y ahora puedo pegarlo aquí. Pero el cuchillo de referencia lo pega aquí. Y sólo voy a dar click en No para éste. Y para el océano de la menopausia sube tu referencia y para la carne también. Y para el océano de aguante. Bien, yo solo voy a llenar el primero ahora aquí y luego tú puedes hacer el resto porque lo contrario va a llevar una eternidad. Para esta descripción, solo puedes agregar una descripción para tus artículos, por ejemplo para el plátano, puedo escribir un delicioso plátano o algo así. Para la categoría, Recuerda, en la categoría de ítem de enumeración, tenemos la categoría de armas, comida y pociones. Y esto también es lo que tienes en la info del ítem. Recuerda para la categoría que utilizas esta enumeración. Entonces puede ser uno de estos tres ahora mismo. Si volvemos atrás, por ejemplo el plátano es un, es comida, por ejemplo la forma en que la poción es pociones. Recuerda escribirlo exactamente como lo has escrito aquí. Y para la clase de artículo, la forma en que puede obtener esta referencia no es yendo aquí y los artículos y haciendo clic derecho y diciendo copiar referencia. Porque si haces esto, en realidad esta no es una clase de artículo. Se trata de un actor de ítem. Así que vamos a eliminarlo de aquí. La forma en que suelo hacer esto es si solo voy a una tabla de datos aquí. Y yo sólo voy a hacer un artículo al azar aquí. Y vamos a seleccionar una clase de artículo por ejemplo el plátano. Voy a hacer clic con el botón derecho en esto aquí y dar clic en Copiar. Ahora puedo volver a mis Hojas de cálculo de Google y pegarlo aquí. Y esta es la correcta para las clases de ítem. Entonces aquí para la última referencia aquí, correcta es si ves blueprint clase generada, esta es la correcta. Bien, entonces ahora tenemos el plátano aquí y lo que puedes hacer es simplemente copiar esto, pegarlo aquí abajo, y puedes simplemente cambiar el nombre del plátano a cuchilla. Y éste de aquí también. Entonces dos veces palanca, palanca. Se puede hacer esto para que el resto sea consumible. Es sólo un sí o un no. Lo que suelo hacer en Google Sheets es ir a Formato y hacer formato condicional. Y en vez de aquí, selecciono para la regla de formato, selecciono texto es exactamente aquí. Podemos decir falso. Y apuntará al rojo, o el color será rojo si es falso. Y agregaré otra regla y la cambiaré a true. Y luego cambia el color a verde si es cierto, así como así. Entonces ahora puedo ver si escribo falso aquí, se vuelve rojo, pirita, cierto, se vuelve verde. Y esto es para los booleanos de aquí. Siempre que tomas un booleano, dice verdad, así. Siempre que lo tengas desmarcado, dice falso. Entonces esto es muy genial. Ahora, permítanme simplemente eliminar esto y en su lugar, en cambio, voy a hacer clic en Insertar y voy a seleccionar una casilla de verificación. Puedo ver por esta casilla de verificación, si está desmarcada, es roja. Si está marcado, lo cual es cierto. En realidad es como este verde. Hay mucho más fresco en mi opinión. Simplemente puedes arrastrar esto en todos tus artículos así como así. En realidad déjame tenerlo a falso antes de hacer esto, arrastrándolo a todos los artículos así como así. Y creo que esto es mucho más limpio. Bien. Ahora que tienes toda la información llenada para cada ítem, puedes continuar y hacer clic en Archivo y seguir adelante y hacer clic en Descargar y descargarlo como un archivo CSV. Ahora voy a dar click aquí y mostrar en carpeta aquí en mi carpeta Descargas. Ahora puedo cambiarle el nombre y puedes cambiarle el nombre al mismo nombre exacto que le diste a tu tabla de datos. Por lo que llamamos al DT item info. Y ahora puedo abrir mi motor y aquí voy a cerrar todo. Voy a ir a mi tabla de datos. Y aquí lo que quiero que hagas es importar es que sea capaz de tu motor. Entonces, lo que puedes hacer es simplemente hacer clic y arrastrar esto a esta tabla de datos. Y ahora va a decir Importar. Está bien, genial. Demos click sobre esto aquí y veamos si tenemos algún error. Ahora puedes ver Forma muy genial de llenar toda la información. Así que ahora tenemos por ejemplo para el plátano, tenemos el nombre, la miniatura, tenemos la descripción, la categoría, la clase de ítem. Si es consumible y apilable y el tamaño Max Stack, entonces los tenemos para cada artículo individual. Esta es la manera más fácil de hacer esto aquí en la tabla de datos. Y la razón también, si tienes no programadores en tu equipo, por ejemplo, diseñadores de juegos y lo que sea. Es mucho más fácil para ellos solo cambiar la información de las hojas de datos y descargarla aquí y simplemente importarla al juego. Y de esa manera automáticamente cambian toda la información de los artículos. Así que muy chulo. Si tienes un diseñador de juegos que no sabe nada de programación, simplemente puede hacer esta información de cambio, por ejemplo, podrías tener algo como valor de moneda y puedes diseñar cuánto cuesta comprar estos artículos en la tienda. Y la gente puede simplemente cambiar los valores aquí. Información importante, y los cambiará automáticamente dentro de aquí. Bien, ahora que esto está hecho, sigamos adelante y creemos una función de biblioteca donde te mostraré cómo extraer información de cada fila. 25. 4.08 Referencia de artículo: Bien, así que sigamos adelante y hagamos clic en la carpeta de apertura azul. Hagamos clic derecho y hagamos una nueva carpeta llamada bibliotecas. Y dentro de aquí, vamos a hacer clic derecho. Vaya a blueprints y seleccione el llamado, Veamos aquí, biblioteca de funciones de blueprint, una biblioteca aquí y llamarlo biblioteca de funciones PP, porque solo podemos tener una. La biblioteca de funciones si la abres. Básicamente es una biblioteca de funciones para que podamos escuchar que solo puedes agregar nuevas funciones. Básicamente tienes una biblioteca de funciones que creas aquí. Lo bueno de una biblioteca es que puedes usarla globalmente. Entonces por ejemplo aquí, digamos, jaja, no lo sé. Sólo vamos a llamar a esta función jajaja. Y ahora en el jugador, solo podemos ir aquí al jugador ahora y hacer clic derecho y decir, jajaja. Y ahora podemos ver, en realidad podemos llamar a esta función desde la biblioteca de funciones y podemos usarla aquí. Entonces, sea lo que sea que creamos una biblioteca de funciones, podemos usar globalmente en cualquier plano que deseemos. Entonces solo, solo para que sepas, tu juego puede llegar a ser muy lento si tienes cientos de funciones aquí. Entonces, es una mala práctica simplemente hacer funciones dentro de aquí en lugar de sus respectivos planos si no los necesitas. Pero para la información del artículo, la información del artículo, realidad la necesitamos en múltiples planos. Entonces así es como necesitas usar las bibliotecas de funciones. Tienes que pensar, cuántas veces vas a usar esta función si la vas a usar en el reproductor y el controlador del reproductor, tal vez la vayas a usar en otra Clase Blueprint. Si vas a usarlo varias veces, es mucho mejor simplemente hacerlo en la biblioteca de funciones. Así que no lo tienes para hacerlo una y otra vez en cada clase de Blueprint. Por aquí, hagamos una nueva función. Vamos a hacer clic en F2 para cambiar el nombre. Voy a llamarlo obtener información del artículo. Para esto obtener información del elemento, lo que quiero hacer es hacer clic con el botón derecho aquí y decir que se pone en una fila de tabla, fila tabla de datos. ¿Bien? Entonces para esta de aquí, ¿ tenemos que seleccionar de qué tabla de datos estamos hablando? Estoy hablando de información del artículo DDT. Y cuál es el ítem o cuál es el nombre de la fila. Entonces ahora puedes ver aquí, cuando seleccionamos un nombre de fila, por ejemplo el cuchillo, y ejecutamos esta función. Sabe que aquí necesita tomar información de la fila de cuchillos. Entonces, si vuelvo a abrir mi Google Drive, toma información de este ID, que es el cuchillo aquí. Y entonces conoce toda esta información que sale aquí. Porque si lo tomas aquí y dices break, entonces rompes esta información en todas estas variables que creaste. Entonces, si seleccionamos el cuchillo de nombre de fila, ahora sabe cuál es la miniatura del cuchillo, la descripción de la misma, la categoría, porque has definido todos los que están aquí dentro de tu tabla de datos en Google Drive. Y la razón por la que sabe qué nombre de elemento de fila tiene es porque en cada uno, recuerde en cada elemento, definió esta variable llamada nombre de elemento. Entonces para la carne por ejemplo va a tomar esta cosa que has escrito aquí y el nombre del artículo se encuentran. Vamos a pasarlo por aquí. Recuerda que esta es una variable de cadena. Vas a esa misma base. Creamos esto como una variable de cadena aquí. Y el item info, solo voy a hacer una entrada de cadena que podremos usar más adelante para meterla aquí. Y llamémoslo nombre del elemento. Bien, entonces tenemos esta. Y ahora si vas a la tabla de datos, entonces hay un pequeño error si no hacemos esto. Entonces en la tabla de datos, ves aquí el id no tiene espacios. Entonces a pesar de que pones un espacio en tu Google Drive o Google Sheets, puedes ver aquí tienes un espacio, tienes un espacio, pero el espacio se elimina automáticamente aquí. Entonces por ejemplo para la poción, si voy al ítem pociones de resistencia y veo aquí has escrito un espacio. Pero para las tablas de datos, no pueden tener espacios en el ID. De esta manera, en realidad necesitamos hacer algo porque todos tus artículos tienen espacio. Esta es la tabla de datos, no tiene espacios y te dará un dólar y no sabes de lo que estás hablando. Entonces necesitamos eliminar los espacios de todas estas formas hacemos esto es aquí en la función, solo conduzca desde aquí y diga reemplazar. Entonces vamos a conseguir el ítem del nombre. Vamos a reemplazar, solo escribe como espacio aquí en el frente. Sólo un espacio. Y eso fue todo. Entonces va a sustituir todos los espacios por nada, que significa que elimina esta base. Y luego va a obtener el nombre de la fila. De esa manera podremos eliminar todos los espacios que hemos hecho así mismo. Y eliminemos éste por ahora de aquí y digamos nodo de retorno. Y arrastra esto a la devolución ahora para crear automáticamente una salida aquí de la información del elemento. Y llamemos a esto información de un artículo. Entonces esa era la función que necesitamos para crear, compilar y guardar todo. Entonces, lo genial está aquí, por ejemplo, en el jugador, ahora podemos decir obtener información del artículo. Esta es la función que acabamos de hacer. Y puedes ver aquí, realmente no necesitamos conectar pines desde aquí porque en Blueprint usualmente lo conectas aquí porque estás configurando información. Pero estos, estos verdes, como puedes ver aquí, no tienen esto y esto es porque solo están obteniendo información. No están estableciendo ninguna información. Pero no necesitamos pasarlo por éste. Entonces para obtener información aquí, volvamos a la biblioteca de funciones. Pueden obtener información del artículo, hacer clic en puro, y ahora compilar. Y volvamos al jugador. Ahora podemos decir obtener información del artículo. Y puedes ver aquí se pone, lo convierte en una función get en su lugar. Entonces por eso presionas puro. Bien, así que ahora podemos obtener la información de este artículo. Entonces sólo tenemos que especificar qué ítem estamos hablando. Vamos a hacer esto más tarde. Así que vamos a hacerlo dinámicamente a través del inventario dependiendo de qué artículo selecciones o saquees del suelo. Entonces le va a dar el ítem e.g aludimos al tallo en una poción desde el suelo. Bien, va a pasar por esto aquí. Aquí va a poner el nombre del papel, pociones de aguante. Y ahora ya sabe de qué información estás hablando porque has definido toda esta información aquí. Entonces en la salida aquí, si arrastras y dices break, ahora conoce la resistencia, pociones, categoría de descripción en miniatura y así sucesivamente. Así que cosas muy, muy chulas. Te veré en la siguiente lección. 26. 5.01 Creación de un componente de inventario: Para hacer el inventario Componente, vamos a la carpeta Planos. Y dentro de aquí, hagamos clic derecho y hagamos una nueva carpeta, y voy a llamarla componentes. Dentro de esta carpeta, hagamos clic con el botón derecho y hagamos clic en Clase Blueprint. Entonces aquí lo que vamos a crear es este componente actor es este es básicamente el componente de inventario que estamos creando. Así que vamos a hacer clic en él. Y le voy a dar un, un prefijo de AAC para componente actor y llamarlo inventario. Muy bien, así que si haces doble clic en él, simplemente se ve así y un plano ordinario como ya estás acostumbrado. Entonces, por ahora, no trabajemos aquí dentro de éste. Vayamos a los planos y encontremos realmente al jugador. Entonces, dentro de la carpeta del reproductor y del reproductor, y dentro del reproductor, ahora podemos agregar los componentes del inventario. Entonces aquí en los componentes, haga clic en Agregar y luego busque el inventario de AAC que acaba de crear. Y aquí lo tenemos. Ahora tenemos el inventario. Pero ahora mismo no podemos hacer mucho con ello. Entonces esto fue para esta lección, solo agregando, creando y agregando estos componentes de inventario. Entonces, sigamos adelante. 27. 5.02 Estructura de ranura de inventario: Antes de que podamos seguir trabajando con se crean componentes de inventario. Sigamos adelante y creamos dos estructuras más. Nos faltan esta última estructura en la estructura de categorías. Entonces vamos a la carpeta Trazos. Aquí creamos la información del artículo. Ahora volvamos a hacer clic aquí y vayamos a planos y seleccionemos estructura. A este lo vamos a llamar ranuras de inventario. Y vamos a entrar de aquí, saber cuál es la estructura de la ranura de inventario. Básicamente se trata de mantener información sobre lo que hay dentro de ese espacio de inventario específico. Recuerda que aquí en la interfaz de usuario creamos esta ranura de inventario. Así que básicamente estamos teniendo una estructura que contiene información sobre lo que es la ranura específica en el inventario contiene. Entonces, antes que nada, contiene el artículo. Entonces lo que sea que hayamos cargado y el artículo, si haces clic aquí, recuerda que hicimos una estructura llamada item info. Por lo que contiene este artículo dentro de las diapositivas. En segundo lugar, también contiene cuántos de este artículo tenemos cantidad de artículo, y esto es solo un valor numérico entero. Entonces contiene el widget en sí. Entonces voy a llamarlo ranura de inventario. Luego seleccionando la interfaz de usuario, creamos la ranura de inventario WB, por lo que contiene la propia variable de ranura de inventario. Y como último, quiero agregar un índice de slot, que podremos usar más adelante. No te preocupes por eso por ahora. Pero el índice de slot es justo ¿de qué ranura de inventario estamos hablando? Porque recuerda, cuando haces un inventario, tienes muchas, muchas ranuras en el inventario. Así que siempre es agradable darles un índice que podrás usar más adelante si es necesario. Y eso fue todo para el espacio de inventario. Entonces pasemos a la siguiente lección. 28. Categoría de inventario y tabla de datos: Ahora sigamos adelante y creamos la estructura para las categorías. Así que volviendo a la carpeta de estructuras, haga clic de nuevo con el botón derecho y vaya a la estructura de planos. Y llamemos a esta categoría de inventario. Vamos a abrir este de aquí arriba. Este es muy sencillo. Simplemente va a contener qué categoría estamos hablando. Y nuevamente, tenemos esta enumeración llamada categoría de ítem, esta de aquí, categoría de ítem. Y lo segundo que necesitamos es el icono para la categoría. Entonces, ¿qué aspecto tiene? Oh, icono de categoría. Y tenemos un par de íconos para la categoría. Ahora bien, este tipo aquí es una textura 2D. Textura 2D, simplemente una imagen. Esta textura 2D aquí de vuelta en los activos, realidad aquí abajo en la interfaz de usuario, tenemos íconos y tenemos íconos para las categorías. Entonces por ejemplo la categoría de armas es este cuchillo aquí tenemos la categoría y el icono en sí. A continuación, necesitamos crear una tabla de datos para ello, tal como hicimos antes. Entonces voy a abrir eso aquí arriba. Esta es la tabla de datos de información del artículo. Y en realidad aquí abajo voy a llamarlo DT item info. Voy a crear uno nuevo haciendo clic en el más aquí abajo. Voy a llamar a esta categoría de inventario DT. Sólo voy a arrastrar estas mesas. ¿Estos campos son un poco más amplios aquí? Así como así. Bien, así que igual que antes aquí arriba tenemos un id. y luego recuerda de la estructura que hiciste, tenemos la categoría y luego tenemos el ícono de categoría. Los voy a hacer audaces aquí arriba. Entonces para la identificación, solo escribimos el nombre de la categoría. Recuerden que tenemos armas, tenemos comida, y tenemos cocientes. Sólo voy a copiar esto aquí atrás. Nuevamente, recuerda escribir esto exactamente como lo has escrito aquí en la enumeración, lo contrario no funcionará. Entonces, en la categoría de elemento de enumeración numeradora, estas son sus categorías. Así que recuerda en la tabla de datos tenemos que especificarlos exactamente así. Ahora para el icono de categoría, necesitamos copiar referencias. Entonces voy a volver aquí en la interfaz de usuario y los iconos. Ahora para la categoría de esta arma, tengo esta. Entonces, haga clic derecho, igual que antes lo hicimos con los elementos, haga clic derecho, copie una referencia, vuelva aquí. Ahora para la comida, veamos cuál era. Era esta categoría de comida. Haga clic con el botón derecho en su referencia, probado. Y para las pociones aquí, consumibles, océanos. Haz clic con el botón derecho, copia tu referencia y pegarla aquí. Ahora básicamente estamos terminados con éste. Así que vamos a hacer clic en Archivo, descargar como un archivo CSV, voy a cambiar el nombre este archivo CSV aquí a la categoría de inventario DT. Y antes de que hagamos algo, volvamos al motor. Vaya a Tablas de datos, y hagamos clic derecho aquí, vaya a miscelánea y luego seleccione Tabla de datos. Ahora tenemos que seleccionar de qué estructura estamos hablando? Estamos hablando de la estructura de categorías de inventario, como bien, y llamamos a esta categoría de inventario DT. Ahora lo que puedes hacer es otra vez, ir a la carpeta de descargas. Podemos arrastrar esto encima de esta tabla de datos y automáticamente importará todo. Ahora vamos a abrirlo y a ver si todo es correcto y solo revisa todo lo que puedas ver ha importado todo correctamente. Y ahora vamos a guardar todo. Lo último que tenemos que hacer de nuevo, necesitamos crear una función de biblioteca. Entonces vayamos a la biblioteca de funciones de la biblioteca. Y aquí igual que antes, vamos a crear uno nuevo llamado Obtener información de categoría. O tal vez sea mejor llamarlo get's información de categoría de inventario. Entonces somos específicos de lo que estamos hablando. Aquí de nuevo, voy a agregar una entrada de string igual que antes. Y llamemos a este nombre de categoría uno. Y al igual que antes, solo voy a entrar en la información del ítem y solo copiar y pegar esto aquí. Recuerda que lo único que hicimos fue escribir un espacio aquí así que eliminamos todos los espacios. Los estamos reemplazando por nada. Entonces voy a la categoría de inventario, pegándolo aquí, conectando la cadena fuente. Y desde aquí podemos decir la fila Get Data Table. Al igual que antes, seleccionamos nuestra categoría de inventario DT. Y por el nombre, va aquí abajo. Y para la salida ahora podemos, podemos obtener un nodo de retorno en un nodo de retorno. Y luego otra vez, igual que antes, arrástralo a la devolución ahora para crear automáticamente una variable aquí y llamarla información de categoría. Bien, entonces ahora podemos usarlo igual que antes. Ahora podemos ir a cualquier parte de cualquier Blueprint y obtener esta información. Entonces e.g. Puedo ir al jugador y aquí podemos decir Información de categoría. Y como pueden volver a ver, esta es una función set, así que necesitamos volver a nuestra biblioteca antes de que me olvide, haga clic en la información de la categoría, configurarla en pura. Y ahora se puede ver que es puro. Es sólo obtener información. Entonces necesitamos, no necesitamos configurarlo. Entonces aquí necesitamos escribir el nombre de la categoría. Esto se configurará automáticamente más adelante. Entonces esto es lo que hemos estado haciendo hasta ahora. Creamos una estructura de inventario. Y luego por aquí, creamos una tabla de datos en Google Sheets e importante está aquí. Y luego creamos una función de biblioteca que se llama obtener información de categoría de inventario, que solo va a obtener información sobre cualquier nombre de fila que ingresemos aquí más adelante. Y podemos obtener esa información. 29. 5.04 Creación de las variables de inventario: Sigamos adelante y creamos las variables para el inventario. Así que volvamos a la carpeta de componentes dentro del componente de inventario que creamos anteriormente. Abramos el editor de planos completo. Dentro de aquí, necesitamos crear un par de variables. En primer lugar, necesitamos crear una variable llamada cantidad de ranuras. Entonces, ¿necesitamos definir cuántas ranuras tiene nuestro inventario? Y el tipo es un entero porque es sólo un valor numérico, como puedes ver aquí. Y lo siguiente que debemos agregar es la categoría de inventario seleccionada. Entonces, más adelante, necesitamos establecer qué categoría tenemos seleccionada. Esta es la categoría e iGem, así como ésta. Entonces posteriormente podremos definir qué categoría hemos seleccionado dependiendo de qué botón de la categoría estemos presionando. Por ahora, sólo podemos dejar que sea así. A continuación, necesitamos crear las categorías que tenemos. Entonces necesitamos tener todos los elementos que eluimos del suelo dentro de variables que podamos contener. Entonces primero tenemos la categoría de armas, y luego tenemos la categoría de alimentos, y luego tenemos a los océanos como consulta. Y recuerda para la categoría aquí en las estructuras que creamos este inventario ranuras. Esta ranura de inventario contiene el artículo, la cantidad, la ranura de inventario en sí, el widget en sí y el índice de diapositivas. Entonces estas son en realidad las categorías. Entonces, hagamos clic aquí y digamos espacios de inventario y seleccionemos esta estructura aquí. Ahora si lo compilas, puedes ver que tienes esta ranura aquí. Sin embargo, para una categoría tenemos múltiples ranuras. Entonces para cada categoría tenemos 16 o cuántos cantidad de slots, en este caso, para este juego, vamos con 16 slots. Para las categorías. No solo contienen un artículo. Recuerda que para cada categoría contienen la cantidad de slots que hemos establecido aquí. Entonces, por ejemplo, si tenemos 16 ranuras, la categoría de armas tiene 16 ranuras, la categoría de alimentos tiene 16 ranuras y así sucesivamente. Entonces, en lugar de tenerla como una variable normal, necesitamos cambiar el tipo de variable a una matriz. Una matriz es simplemente un contenedor donde tenemos múltiples de estas estructuras. Entonces haciendo clic en una matriz y compilando, y ahora voy a compilar. Puedes ver aquí si hago clic en el plus, ahora tenemos este singular slot dentro de estas categorías. Entonces aquí en esta ranura contiene un artículo y la cantidad. Y si vuelvo a hacer clic en Plus, contiene otro artículo y la cantidad y así sucesivamente. Entonces te puedes imaginar para una categoría, tenemos 16 artículos aquí, abajo de la fila aquí. Entonces ahora puedes ver que tiene sentido que necesitemos tener una matriz porque no contiene solo un espacio de inventario. Contiene múltiples ranuras de inventario. Voy a eliminar todas esas ranuras aquí. Los vamos a sumar dinámicamente en el juego. Tenemos que hacer lo mismo aquí para la categoría de alimentos, buscar lotes de inventarios. Y por aquí otra vez, espacios de inventario y recuerde cambiarlos a una matriz. Entonces este también o una matriz y los océanos aquí abajo a una matriz y seguir adelante y hacer clic en compilar y guardar todo. Y ahora esto es lo que tenemos hasta ahora. Entonces vamos a establecer la cantidad de slots. De hecho volvamos al jugador. El jugador lo abre. Y si haces clic en el componente de inventario, ya puedes ver que tenemos estas variables que podemos jugar con la cantidad de diapositivas. De hecho voy a establecer 16 porque este es mi inventario y tengo 16 ranuras. Si quieres más slots, puedes seguir adelante y agregar más slots a tu juego. Y para el inventario seleccionado, vamos a introducirlo dinámicamente en el juego dependiendo de qué categoría estemos presionando. Lo mismo para las categorías las estamos estableciendo también dinámicamente en el juego. Entonces esto fue por ahora. Solo recuerda establecer la cantidad de lodo para tu inventario y sigamos adelante. 30. 5.05 Cambia las variables de categoría de inventario: Aquí estamos dentro del componente de inventario. Y antes de que podamos usar estas matrices aquí, necesitamos cambiar el tamaño de las matrices. Entonces, cuando creas una matriz y una variable de un tipo de matriz, tienes que cambiar el tamaño de la matriz antes de que podamos usarla. Y para esta matriz, en realidad vamos a redimensionarla dependiendo cantidad de ranuras para el inventario que tengamos. Voy a eliminar esto aquí, y voy a hacer clic derecho y decir eventos personalizados. Y vamos a llamar a éste inicializar inventario porque vamos a ejecutarlo como lo primero. Aquí abajo. Vamos a ejecutarlo a través de los clientes. Por lo tanto, CL, inicializar el inventario para la replicación se ejecuta en el cliente propietario y confiable. Y recuerde ejecutar el cliente uno aquí arriba y los eventos personalizados normales así como así. Así que muy, muy sencillo. Aquí vamos a tomar una de las variables. Y para la matriz, si quieres saber qué funciones puedes hacer para una matriz, puedes simplemente escribir array. Y luego puedes ver que todos estos son para la matriz y puedes jugar con esos como desees. Pero por ahora, vamos a decir redimensionar, que estamos redimensionando esta matriz. El tamaño de la misma es solo la cantidad de slots que hemos creado aquí. Entonces va a redimensionarlo, esta matriz para tener 16 slots. Así que recuerda en el jugador, en el jugador bp aquí, si haces clic en el componente de inventario, dependiendo de cuántas ranuras hayas seleccionado aquí. Así que aquí para este juego, solo estoy creando 16 slots. Así que va a cambiar el tamaño de esta matriz para tener 16 ranuras también. Hagamos esto por la comida también desde aquí y digamos redimensionar y también para la poción, arrastremos aquí y digamos redimensionar. Ahora conecta todo. Y puedes arrastrar de esta cantidad de slots y conectarte aquí también. Si deseas estar más organizado, de nuevo, puedes hacer doble clic en esperar, redireccionar nodos. Y solo para que puedas seleccionar todo y presionar Q y la palabra clave que hará que todo sea recto así. Y recuerda que tienes que ejecutar este evento en alguna parte para que se ejecute, porque en este momento no ejecutamos este evento en ninguna parte de nuestro código. Así que vamos a ejecutarlo aquí para el jugador cada vez que el jugador genere. Así que aquí en el principio juega, vamos, vamos a ejecutarlo aquí y podemos derivar de este inventario de AAC. Recuerda, este AC hace un inventario de nuestro inventario, por lo que podemos llamar a esto eventos, así podemos llamar a inicializar inventario y podemos hacerlo aquí al principio. Si deseas ver si esto está funcionando, porque ahora mismo si haces clic en Reproducir, realmente no puedes ver nada porque solo está redimensionando aquí. Pero a veces es muy agradable usar nodos de impresión. Entonces cuando la cadena y aquí tal vez solo puedas tomar este, por ejemplo y decir longitud. ¿Cuál es la longitud de esta matriz aquí? Así que vamos a conectarlo a esta cadena de impresión. Y ahora vamos a compilar. Haga clic en jugar. Y aquí arriba se puede ver que dice 16. Puedo hacer esto más largo para que lo veas. Y déjame hacer el color rojo. Entonces si hago clic en Reproducir, se puede ver la parte superior izquierda de la pantalla dice 16. Entonces el tamaño de las matrices son correctas. Ahora, ahora hagamos clic en compilar, guardar todo, y sigamos adelante. 31. 5.06 Muestra de las categorías de inventario: Ahora vamos a mostrar los widgets de categoría de inventario. Entonces volvamos a la carpeta Blueprints y vayamos al controlador del reproductor. Recuerda en el controlador del reproductor, estamos trabajando con widgets. Dentro de aquí quiero que vayas al Gráfico de Eventos y haz clic derecho y vamos a crear un evento personalizado. Entonces, para este evento personalizado, lo vamos a llamar inventario de tarifas, widgets de categoría. Y también recuerda copiar el nombre y hagamos uno para el cliente. Porque nuevamente, la interfaz de usuario se realiza a través de los clientes. Así que haz clic derecho, haz un nuevo evento personalizado y éste va a correr a través del cliente. Entonces, para las réplicas, vamos a cambiarlo para que se ejecute en cliente de clonación y confiable. Ahora vamos a ejecutar este cliente uno de los ordinarios. Entonces ejecutamos el código y nos vemos así. Entonces para los widgets de categoría de inventario, si volvemos a nuestra UI y dentro del inventario, aquí, hicimos una caja vertical llamada categorías. Entonces esta es la caja vertical y queremos agregar las categorías a esta caja vertical. Ahora para hacer esto primero, da clic en este cuadro vertical y necesitamos configurarlo en es variable. Así que en realidad podemos usar esta variable y agregar elementos dentro de ella. Ahora, cuando sea variable, volvamos al controlador del reproductor y ahora necesitamos acceder a él. Así que recuerda que está en el inventario de WB y ya has hecho una variable a partir de él antes. Así que vamos a arrastrarlo aquí, y vamos a conseguir esa variable. Ahora podemos arrastrar y escribir el nombre de la caja de verduras. Así categorías VB. Antes de que hagamos nada, arrastrad de aquí y digan niños claros. Porque vamos a redibujar cada categoría widgets y categorías slots también cuando hagamos, hacerlos más adelante, cuando volvamos a dibujar, tenemos que eliminar los antiguos. Entonces, por ejemplo, cuando cargas un elemento, tienes que volver a dibujar todo para actualizar la interfaz de usuario. Entonces tenemos que limpiar los viejos antes de hacer nada. Entonces aclaremos que los niños antes los agregamos nuevamente. Y para agregar las categorías, vamos a arrastrar desde aquí ahora y decir que una fila de tabla nombra. Pero esto sí, es que va dentro de nuestra tabla de datos para la categoría de inventario. Aquí va a conseguir cada una de las filas y podemos imprimirlas en la pantalla. Entonces aquí están todos los nombres. Entonces aquí lo que quiero que hagas es arrastrar desde aquí y decir por cada bucle. Así que vamos a recorrer cada fila. Volvamos aquí solo para mostrarte en los planos y tablas de datos y categoría de inventario. Dentro de aquí tenemos tres nombres de filas. Entonces las armas, la comida, y las pociones. Y esto es lo que va a pasar aquí. Va a hacer bucle para cada uno de estos nombres aquí. Entonces tres veces para cada uno de ellos. Recuerde, hicimos una función dentro de la biblioteca de funciones, diciendo obtiene información de categoría. Así que vamos a obtener nuestra función de información de categoría aquí. Y ahora vamos a enchufar este nombre a esta cadena y va a convertir automáticamente la variable name en una cadena. Entonces ahora estamos obteniendo la información de la categoría. Y si no recuerdas qué fue esto, qué fue esto, puedes hacer doble clic sobre él y te llevará a la función y a la biblioteca de la función. Y puedes ver lo que simplemente obtiene el nombre y luego obtiene esa información de fila de tabla de datos y la genera aquí. Así que en realidad podemos usarlo en el controlador del reproductor. Entonces aquí puedes o bien hacer clic derecho y Dividir Struct pin y puedes obtener la información o puedes arrastrar de ella y decir break, esto es lo que suelo hacer. Y aquí también puedes obtener la información. Entonces lo que estamos tratando de hacer es para cada una de estas categorías de inventario, estamos tratando de crear un widget y agregarlo a este cuadro vertical. Ahora vamos a seguir adelante y arrastrar desde aquí y decir Crear Widget. Entonces ya conocemos esta función. Entonces vamos a crear un widget. Y el widget que vamos a crear es este widget de categoría de inventario que creamos anteriormente. Recuerda en la interfaz de usuario, si vamos a la categoría de inventario de categoría, este es el widget que creamos. Entonces este es el que estamos creando. Y estamos creando y para cada uno de estos nombres de fila. Entonces vamos a crearlo tres veces. Por lo que es muy genial trabajar con tablas de datos. Si decides agregar una cuarta categoría, automáticamente la tomará en cuenta aquí y automáticamente se agregará al inventario. Así que muy genial hacerlo dinámicamente así porque te resultará mucho más fácil más adelante. Bien, Así que aquí, cuando creamos el widget, queremos decirle cuál es la categoría. Y también queremos enchufar este icono, porque recuerda que tenemos este ícono estático y queremos cambiarlo dependiendo de cuál sea la categoría. Entonces volvamos a la categoría de inventario. Aquí, ve a la gráfica. Y ahora vamos a hacer clic en el más aquí para las variables. La primera variable que vamos a hacer son las categorías. Entonces vamos a asignarle la categoría. Y a continuación tenemos el ícono de categoría. Y esta va a ser textura 2D. Ahora lo que vamos a hacer es dar clic en el primero y luego dar clic en Instancia editable y exponer en spawn. Y puedes hacerlo en ambos. Entonces el ícono de categoría también, instancia editable y exponer en spawn. Lo que esto hace es que si vuelves al controlador del reproductor ahora, haces clic en archivo y refrescas todos los nodos. Se puede ver que los hemos expuesto aquí para que hecho podamos enchufar información en ellos. Así que vamos a arrastrar esta categoría y asignarla aquí. Y vamos a arrastrar este icono y asignarlo también. Entonces ahora hemos creado un widget, así que va a crear un tres widgets. Entonces, hasta ahora lo que estamos haciendo es que estamos limpiando los niños para esta caja vertical para que quede limpia. Después de eso, estamos obteniendo todos nuestros nombres de fila, que tiene todos estos tres aquí. Lo que estamos diciendo es para cada una de estas filas, vamos a tomar el nombre, vamos a tomar la información de la categoría de inventario. Y a partir de aquí estamos tomando el icono y la categoría y conectándolo a esta función crear widget. Entonces ahora estamos creando tres widgets, sin embargo, recuerden, solo los estamos creando aquí. Tenemos que agregarlos también a la caja vertical. Entonces voy a copiar esto aquí, las variables de inventario y caja vertical. Y ahora lo que podemos hacer es arrastrar desde esta caja vertical. Y podemos decir agregar niño a cuadro vertical. Y vamos a conectarlo ahora. ¿Y qué niño debemos agregar? Simplemente este widget que acabamos de crear. Ahora lo que puedes hacer es hacer doble clic en estas líneas para hacer notas de ferrocarril y organizar tu código un poco mejor. Y ahora vamos a compilar. Entonces ahora mismo si hacemos clic en Reproducir, no pasará nada. Y la razón por la que no agrega. Entonces, si haces clic en I para abrir el inventario, no pasará nada. Recuerda, no has corrido este código en ningún lado, así que tienes que escribirlo en alguna parte. Así que crea widgets de categoría de inventario. De hecho, solo vamos a ejecutarlo para el jugador. Entonces si vuelves a los planos y vamos al jugador B, jugador aquí en la jugada de inicio, Digamos ahora Get Controller. Y vamos a conseguir el controlador para este reproductor. Entonces podemos decir, recuerda aquí hicimos una interfaz llamada int player controller. Entonces tenemos la referencia del controlador del reproductor. Entonces podemos decir que es layout, control o referencia porque esta es la interfaz que hicimos antes. Entonces ahora como el controlador del reproductor, porque recuerden, hemos estado trabajando en el controlador del reproductor, así que necesitamos la referencia y ahora podemos llamar a los widgets de categoría de inventario de tarifas. Así que dentro de aquí, Digamos crear widgets de categoría de inventario. Y debería funcionar. Así que vamos a compilar y guardar todo. Ahora nos va a dar un bicho. Entonces, si hacemos clic en reproducir y yo hago clic en el ojo, se puede ver que no pasa nada. Y si salgo de aquí, nos va a dar un bicho. Y la razón es que si volvemos al controlador del jugador, estás, estás tomando información de esta variable de inventario de WB. No obstante, antes hacemos clic en el ojo, así que éste, recuerda, lo estás ejecutando instantáneamente cuando el jugador está desove. Sin embargo, esta variable aún no se ha creado. Esta variable solo se crea cada vez que haces clic en el botón I porque luego abres el widget aquí y creas esta variable. Entonces, si puedes copiar esto aquí, creamos widget para el inventario y vuelves al Gráfico de Eventos. Y aquí arriba en el inicializar los widgets, solo voy a agregar el inventario también porque la India Sheila is widgets se ejecuta automáticamente cuando empezamos a jugar el juego. Así que en realidad se crea de inmediato y podemos usarlo aquí en la jugada inicial también para el jugador. Y la razón por la que se crea más rápido en el controlador es porque el controlador del jugador se crea antes de que se cree el jugador. Así es como es. Así que ahora vamos a hacer clic en play. Y cuando hacemos clic en la IA, se puede ver, ya podemos ver la información aquí. Podemos ver todos los tres widgets. Sin embargo, los íconos no han cambiado. Y porque este es el último paso que nos falta. Así que volvamos aquí. Pasemos a la categoría de inventario de WB. Aquí. Eliminémoslos y mantengamos la construcción del evento. Para la construcción del evento, esto es lo mismo que la jugada de inicio. Lo que tenemos que hacer es que tenemos que tomar esta categoría de imagen porque recuerda, si haces clic en ella, esto es como la nombraste aquí. Entonces este es mi icono, mi imagen. Entonces necesito tomar esta variable aquí y decir, establece pincel a partir de textura. Y ahora podemos elegir a qué textura configurarlo. La textura es simplemente este icono de categoría que acabamos de establecer. Porque recuerda en el controlador del jugador, cada vez que creamos la categoría, le asignamos el ícono de categoría respectivo, en realidad ya tenemos lista esa variable y podemos conectarla a la textura. Ahora vamos a compilar y vamos a dar click en play. Y si hago clic en i ahora se puede ver que todos los iconos de categoría se asignan automáticamente. Así que solo un rápido recorrido a través. Si volvemos aquí, creamos estos widgets de categoría de inventario de crédito. Y lo ejecutamos a través del cliente porque widgets para ejecutar a través del cliente. Y luego eliminamos o limpiamos los niños aquí solo para asegurarnos de que esté vacío, luego obtenemos todos los nombres de fila de la tabla de datos. Y para cada uno de estos nombres que están obteniendo su información. Y con esa información, podemos conectarla al widget Crear. Así que estamos creando los widgets uno por uno a través de esto para cada bucle. Y estamos enchufando la información. También los estamos agregando uno por uno con la pendiente. Entonces ahora hemos creado las categorías y las agregamos a nuestro inventario. Así que pasemos a las ranuras de inventario. 32. 5.07 Muestra las ranuras de inventario: Las ranuras de inventario, volvamos al controlador del jugador. Y al igual que antes, las categorías, bajemos por aquí y hagamos un nuevo evento personalizado. Y llamemos a esto widgets de tragamonedas de inventario de tasa de eventos personalizados . Nuevamente, copiemos este nombre porque tenemos que pasar uno a través de los clientes. Así que vamos a hacer un evento personalizado y ejecutarlo a través del cliente. Recuerda hacer click en él. Corre en ser dueño del cliente y confiable. Y para el cliente o para el normal, tenemos que ejecutar al cliente. Recuerda que son los widgets de slot, no la categoría. Entonces seleccionando los widgets de ranura. Entonces qué queremos hacer con estos widgets, si volvemos a la UI y damos click en el inventario. Así que aquí recuerda para el inventario, creamos esta cuadrícula de variables de inventario. Entonces para este inventario de cuadrícula, lo que tenemos que hacer de nuevo, que hacer clic aquí es variable lo contrario no podemos usar esta variable. Entonces si no lo hago, click es variable. Puedes ver aquí si consigo mi inventario y como cuadrícula, simplemente no podemos ver esta variable. Pero si voy aquí y hago clic en la variable S para este inventario de cuadrícula, ahora puedo arrastrar desde aquí y decir cuadrícula. Y se puede ver como una variable y podemos usarlo igual que antes. Despejemos a los niños y asegurémonos no haya espacios de inventario dentro él cada vez que aludimos a un artículo más adelante o lo soltemos del inventario, tenemos que volver a dibujar todas las ranuras para actualizar el inventario. Tenemos que asegurarnos de que los viejos estén despejados antes de agregar los nuevos. Así que limpiemos a los niños y asegurémonos de que esté vacío y limpio. Ahora vamos a hacer un bucle. Así que conduce desde aquí y di por bucle, y selecciona éste. Entonces nuevamente, recuerda por la cantidad de slots, ya tenemos una variable en el inventario. Entonces, si volvemos al componente de inventario aquí, creamos este llamado cantidad de slots. Necesitamos una referencia a este inventario. Entonces aquí arriba, voy a hacer clic en el más y luego encontrar mi variable de inventario AAC. Y llamémoslo inventario. Y entonces hagamos lo mismo aquí abajo. Déjame hacer clic en el Plus, seleccionar la variable de inventario AAC y llamarlo inventario. Entonces ahora lo que podemos hacer es enchufarlo aquí. Y para éste, crea widgets de slot de inventario. Vamos al jugador y hagamos clic en el jugador DP. Y dentro de ella, otra vez, vamos a ejecutarlo en el Begin Play. Podemos tomarlo aquí desde el controlador igual que antes lo que hicimos con las categorías de inventario. Así que vamos a arrastrar desde aquí y decir para crear widgets de ranura de inventario. Entonces seleccionando este de aquí y necesitamos enchufar el inventario. Recuerda, puedes simplemente arrastrar desde aquí porque ya tienes el inventario. Y también has definido cuántas ranuras tienes en tu inventario. Entonces ahora puedes tener este número, este 16 aquí que escribimos. Entonces, si volvemos al controlador del jugador, necesitamos bucle tantas veces como lo que has escrito aquí por la cantidad de slots, porque esta es la cantidad de slots que queremos crear. Así que arrastrando desde aquí y diciendo cantidad de slots, este de aquí. Ahora para los bucles, parten del índice de cero y no de uno. Si solo los enchufamos aquí, va a crear 17 espacios de inventario y no 16. Tenemos que tomar este y decir menos. Así restar y restar por uno, luego conectarlo al último índice. Entonces, ¿qué vamos a hacer 16 veces? Simplemente vamos a crear widgets. Y lo que quieres crear, queremos crear un inventario de WB slots. Y así como algo agradable más adelante, necesitamos tener el índice de slot. Así que volvamos a la interfaz de usuario y abramos el espacio de inventario. Yo sólo voy a ir a la gráfica y hacer una nueva variable llamada slots index, y luego seleccionar el entero y compilar. Y al igual que antes, seleccionemos la instancia editable y expongamos en spawn. Vuelve al controlador del reproductor como en el archivo y actualiza todos los nodos. Entonces ahora podemos tomar esto y enchufar esto en el índice de slot. Siempre es bueno tener este índice porque más adelante puedes necesitarlo cuando estés programando y necesitas un slot específico. Bien, así como lo último ahora, al igual que antes de crear el widget, ahora necesitamos agregarlo a la grilla que tenemos. Entonces tomando esto aquí, el inventario de WB y luego la variable de inventario de cuadrícula. Y ahora arrastremos desde aquí y digamos Agregar niño a la cuadrícula y menos conectado. Entonces para la cuadrícula, aquí tenemos las filas y las columnas. Ahora antes de hacer esto, el contenido que queremos agregar es simplemente este widget que acabamos de crear. Y puedes hacer doble clic aquí nuevo para hacer un nodo de reencaminamiento. Ahora para las filas y las columnas, Es muy, muy sencillo. Se puede arrastrar de aquí y decir dividido por cuatro. Porque lo que quiero que hagan es que el inventario sea de cuatro franjas horarias por la fuerza, mucha pérdida de bosque por cuatro ranuras. Y esto es lo que puedes hacer. Entonces tenemos 16 slots divididos por cuatro, eso nos dará cuatro en la columna. Y también divididos por cuatro no se dividen sino módulo cuatro y luego nos dará cuatro por cuatro. Entonces si arrastramos de aquí otra vez y decimos módulo y seleccionamos esto aquí, y luego cuatro nuevamente. Ahora podemos tomar esto y conectarlo con la fila, y tomar esto y conectarlo con la columna. Por lo que siempre se pueden cambiar estos números. Es porque quiero tener mis slots cuatro por cuatro. Pero tal vez quieras que tus diapositivas sean ocho por ocho para que puedas cambiar estos números dependiendo de cómo se vea tu inventario. Ahora hagamos clic en compilar y hagamos clic en una forma para ver qué pasa. Si hago clic en, puedo ver mi inventario se está agregando a mi pantalla. Entonces así es como se ve. Es muy enorme ahora mismo, y necesito reducir el tamaño. Pero vamos a eliminar todos los iconos para empezar por defecto, porque no quiero ver todos los iconos que aparecen por defecto. Entonces voy a hacer click en la ranura de inventario, volver al diseñador. Y aquí puedes dar click en el icono y bajar aquí en la visibilidad y configurarlo en oculto. Lo mismo con el número haz clic en él, vuelve a la visibilidad y además configura este a oculto. Ahora bien, si hago clic en Reproducir de nuevo, y ahora hago clic en el ojo, puedes ver que todo está oculto y es más agradable de esta manera porque luego podemos mostrar los íconos más adelante si realmente tenemos un elemento y no este ícono predeterminado para el tamaño, podría quedar bien para ti. Si vuelvo aquí, pueden ver aquí estoy diseñando en 12 80 por 720. Entonces esta es mi pantalla de diseño predeterminada aquí. Para esto lo estoy diseñando. Las personas con monitores más pequeños lo verán normalmente así. Se ve que no es, no es enorme así. Si hago clic en jugar y clic en aquí, puedes ver que aquí es muy enorme. Y realmente no se ve así por aquí. Esto se debe a que tenemos algo llamado escalado DPI. Ahora estoy trabajando en esta resolución. No obstante, si haces clic aquí porque tengo un tenedor, un monitor, es yo pienso algo acerca de 3 mil aquí, 3 mil 800. Entonces al hacer clic en este pequeño icono, puedes ver aquí está escalando mi UI dependiendo de cuál sea mi pantalla. Entonces ahora mismo lo estoy diseñando para una pantalla por aquí. En realidad este de aquí. Sin embargo, mi pantalla está por aquí. Entonces es en realidad, se puede ver que la escala es para realmente escalarla cuatro veces o 3.5 veces. Lo que puedes hacer es simplemente seleccionar esta y luego puedes reducir la escala para que no escale tanto. Al hacer clic aquí y simplemente configurarlo en dos, por ejemplo y esto es solo si te sucede a ti. Entonces esto suele ser cuando se quiere cambiar el tamaño de interfaz de usuario de dos monitores diferentes y hacer que se vean bien para diferentes monitores. Puede haber 2.5 y el tamaño haciendo clic en Play, puedo dar click en el ojo. Se puede ver que ahora es mucho más pequeño y me gusta más así. Bien, entonces ahora agregamos las ranuras de inventario. Vamos a guardar todo, y sigamos adelante. 33. 5.08 establece la categoría de inventario: Tenemos que hacer ahora es cuando hacemos clic en un botón de categoría para el inventario, necesita configurarlo a esa categoría seleccionada. Así que vamos a seguir adelante y los planos, y vamos a crear esta lógica dentro del componente de inventario. Bajemos aquí y hagamos nuevos eventos personalizados. Y a este que vamos a llamar establecer categoría de inventario seleccionada. Y nuevamente, estamos trabajando con UI. Entonces voy a copiar esto y hacer un nuevo evento personalizado y ejecutarlo a través del cliente. Así corriendo, siendo dueño del cliente y confiable. Entonces, ¿qué necesitamos hacer aquí para este conjunto de categoría de inventario seleccionada? Recuerde, hemos realizado esta enumeración, la categoría de artículo E, conjunto, la categoría de inventario seleccionada. Vamos a arrastrarlo desde aquí. Y mientras mantienes presionado Alt, puedes soltarlo y automáticamente se establece así. Así que simplemente estamos configurando esta variable y voy a arrastrar esta y soltarla en el evento. Esto creará automáticamente una entrada aquí. Puedes crearlo manualmente, o simplemente podemos hacer clic y arrastrar y soltar. Y lo creará para ti. Ahora llamemos al cliente uno aquí arriba, Establecer categoría de inventario Seleccionado. Voy a hacer click y arrastrar esto nuevamente aquí, así que simplemente recorre todo el proceso. Ahora, necesitamos ejecutar este evento cada vez que hacemos clic en un botón o en las categorías. Así que volvamos a la interfaz de usuario y hagamos clic en la categoría de inventario. Ahora, vamos a hacer clic en este botón, la categoría del botón y déjame bajar. Y luego en el evento OnClick. Entonces, ¿qué debería pasar cuando haga clic en este botón? Simplemente quiero llamar a este conjunto categoría de inventario seleccionada. Entonces, ¿cómo conseguimos este evento? Estamos dentro del inventario y ahora mismo estamos dentro de la interfaz de usuario. Esta puede ser una práctica para que intentes averiguar cómo llegas realmente ahí, cómo llegas a ese inventario. Ahora, hagámoslo juntos para que puedas hacer una pausa si quieres hacerlo solo. Entonces aquí, lo que queremos hacer es que haya una función donde se pueda obtener la capa que posee esta interfaz de usuario. Entonces cada, cada interfaz de usuario que se genera para un jugador es propiedad del jugador. Entonces ahora mismo podemos hacer clic derecho y decir Get Owning layer on. Entonces está tratando de encontrar la capa que posee esta interfaz de usuario. Y aquí realmente necesitamos una referencia al jugador, pero aún no hemos hecho una. Recuerda los planos cuando vamos a interfaces. Aquí solo tenemos una interfaz para el controlador donde tenemos el control de capa get, nuestra referencia. Así que en realidad necesitamos hacer uno para el jugador también. Entonces voy a volver aquí a las interfaces, haga clic con el botón derecho en Blueprint, Blueprint Interface. Vamos a llamarlo capa int. Haga doble clic sobre él. Y dentro de aquí para la función, llamémoslo get's layer reference. Y ahora aquí abajo, recuerda que tienes que seleccionar la variable a la que quieres hacer referencia. Entonces quiero hacer referencia a la capa BP, y llamémosla capa aquí abajo. Vamos a compilar. Recuerda, muy importante compilar aquí. Ahora vamos al reproductor y agreguemos la interfaz. Entonces bp player Ir a la clase por defecto son en realidad los Ajustes de Clase. Y aquí para las interfaces, vamos a hacer clic en él y buscar int layer compile. Y ahora verás aquí en las interfaces obtener Blair ref. Al igual que antes, necesitamos definir quién es el jugador. Estamos dentro de los jugadores B2B. Así que solo puedes intentarlo, puedes decir auto. Entonces esta es la referencia de maquetación. Bien, entonces ahora tenemos esto y ahora podemos volver a nuestra IU de categoría de inventario. Así que consigue ser dueño del peón del jugador. Ahora dice, ¿de qué Jugador sobre estás hablando específicamente? Estoy hablando específicamente de jugador bp. Entonces podemos decir que ahora obtiene referencia de jugador que acabamos de hacer. Y es mensaje porque es de una Interfaz de Blueprint. Entonces ahora tenemos la referencia del jugador, y ahora como jugador, ahora podemos obtener el inventario porque todo el proceso aquí fue obtener el inventario. Así podemos llamar a establecer la categoría de inventario seleccionada. Entonces aquí en el, en la categoría de inventario UI, vamos a arrastrar desde aquí y digamos AAC, inventario. Y bajemos y encontremos la variable. Las variables están siempre al final aquí. Ahora como el inventario podemos llamar a establecer la categoría de inventario seleccionada. ¿Y cuál es la categoría? ¿Quieres configurarlo? Recuerda en el controlador del reproductor, si vuelvo ahora, ahora va a ser un poco confuso porque vamos de ida y vuelta lo que estoy tratando de explicarlo lo mejor que pueda. Recuerda en el controlador del jugador cuando hicimos las categorías para cada uno de los nombres de fila aquí de nuestra tabla de datos. Tomamos la categoría y la enchufamos al botón creado aquí. Entonces aquí en el botón ya sabe cuál es la categoría. Así que simplemente puedes hacer clic y arrastrar esto y conectarlo aquí. Entonces cada botón tendrá su propia categoría, que ingresará aquí. Y la información correcta se establecerá aquí. Bien, muy importante. Cada vez que establecemos la categoría, queremos volver a dibujar todos estos botones. Entonces aquí en las franjas horarias de inventario, queremos volver a dibujar todas estas ranuras porque estamos cambiando de categoría. Por lo que no queremos ver las viejas ranuras de la categoría antigua. Ahora lo que tenemos que hacer, y esto es en realidad por lo que sí declaramos niños porque queremos quitar los botones viejos o los viejos slots de inventario ser antes de agregar los nuevos. Tan grandes widgets de ranura de inventario. Tenemos que llamarlo en el año que establecemos la categoría entera seleccionada. Y ahora necesitamos una referencia al controlador del jugador de este inventario. Entonces, ¿cómo hacemos esto? La forma en que hacemos esto primero, tenemos que conseguir al jugador. Así que realmente no podemos obtener el controlador del reproductor directamente de este componente. Pero recuerden, este componente está dentro del jugador. Entonces lo que podemos hacer es que podemos hacer clic derecho y decir, sin embargo dueño, que va a conseguir el jugador. Y nuevamente, igual que antes tenemos que contarlo específicamente, somos onerosos o de lo que estamos hablando. Estamos hablando específicamente de este jugador de bp. Entonces podemos decir obtiene referencia de capa que acabamos de hacer. Y ahora podemos conectar éste. Y aquí podemos conseguir el controlador. Para que puedas rastrear aquí y decir Get Controller. Sin embargo, se puede decir get controller y luego se puede decir Get layer, la referencia del controlador. Y de esa manera puedes llamar a crear, crear espacios de inventario, widgets. Puedes hacerlo así. No obstante, esto haciéndose muy largo que tenemos que hacer esto cada vez. Entonces, en cambio, volvamos al jugador. Y en lugar de hacer esto get controller, vamos a crearlo en una variable. Así que por aquí en la jugada de inicio, en vez de hacer esto, vamos a obtener el Controller y digamos obtiene la capa de referencia de Controller. Y ahora podemos hacer clic aquí y promover esto a una variable y llamarlo controlador de diseño. Pero ahora tenemos el controlador del reproductor y no tenemos que hacer esto cada vez dentro de aquí. Entonces, cuando tengamos el control de placa, en realidad eliminemos este costo. Como ahora tenemos esta Interfaz de Blueprint, podemos eliminar esto de vez en cuando solo podemos conectarlo aquí en lugar de conectarlo juntos. Y vamos a arrastrar todo más cerca. Y ahora este controlador de flujo también se puede utilizar aquí. No tenemos que llamar a este controlador de reproductor. Otra vez. Vamos a eliminarlo y conectémoslos aquí. Ahora el objetivo aquí de nuevo es el controlador del jugador de rol de las plataformas. Así que tomemos esta variable de controlador de diseño que acabamos de hacer. Y vamos a conectarlo aquí arriba. A continuación vamos hasta aquí y se puede ver que está mucho más limpio que antes. En lugar de llamar a la referencia del controlador del jugador cada vez, solo podemos hacer esto. Voy a organizarlo un poco mejor, así que no es demasiado desordenado aquí. Bien, entonces ahora tenemos este controlador y se ve genial. Y en realidad podemos hacerlo aquí también. Para hacerlo más limpio, podemos tomar el controlador del reproductor y simplemente iniciar sesión aquí. En realidad esto está mal. Entonces tomémoslo aquí, solo llámalo aquí, y solo podemos conectarlo manualmente así. Y podemos eliminar este controlador negro. Entonces ahora es mucho más limpio de ver así. Y déjame arrastrarlos más juntos. Entonces el código está mucho más limpio aquí. Y si volvemos al inventario de AAC, ahora en vez de llamar a esto, ahora terminamos capa tener la variable player controller. Entonces eso es mucho más limpio. Y podemos conectarlo aquí y llamar a los widgets de slot create inventory. Y el inventario nuevamente, podemos tomar del jugador y llamar a la Variable de inventario AAC, bajar al fondo, encontrar la Variable de inventario y conectamos aquí. Bien, así que esto ya está terminado. Entonces aquí, cuando estoy en el juego y hago clic en el ojo, es realmente imposible hacer clic en el botón porque en este momento no tenemos un mouse que puedas ver o podemos correr alrededor de eso. En realidad no tenemos un ratón. Así que vamos a arreglar esto. este momento me sale una caja ya que x es nueve tratando de leer la propiedad y está hablando de que obtienes subsistema de nivel local, el contexto de mapeo. Así que en realidad tenemos que volver con el jugador aquí. Al contexto de mapeo no le gusta esto. Habrá cuatro. De hecho lo configuramos y lo enchufamos. Arrastremos desde el controlador split y digamos que es válido. Solo asegurándose de que sea válido antes de que realmente funcione. Este código es válido. Y si es válido, puedes seguir adelante y ejecutar el código. Ahora puedes hacer doble clic sobre esto para que sea más agradable. Y hagamos clic en Reproducir y veamos si vuelve a fallar. Corriendo por ahí. Si corro en el cliente también, puedo quitarlo y se puede ver que ya no tenemos caja. Así que solo asegurándonos de que sea válido antes de hacer esto. Bien, así que para el ratón, vamos al controlador del reproductor. Aquí en los valores por defecto de clase. Tienes show mouse, cursor. Ahora vamos a darle click aquí y vamos a hacer clic en Reproducir. Y ahora puedes ver, puedo ver el ratón y ya no puedo mirar a mi alrededor. Realmente no es importante para este curso no se trata de movimientos, así que realmente no me importa, pero puedes sostener el mouse y puedes darle la vuelta al jugador y mirar a tu alrededor. Pero no es realmente importante por ahora, no te importa el movimiento ni fijarlo. Centrémonos en el inventario. Entonces, hacer clic en el inventario no funciona porque realmente no lo hemos establecido. Tenemos que arreglarlo también. Cuando pongo el mouse sobre los botones de categoría, tampoco puedo presionarlos realmente. Entonces veamos qué pasa con eso. Entonces, vamos a cerrar esto. Volvamos a la categoría de inventario y vayamos al diseñador. Entonces, mirando el botón, puedo ver que está configurado en azul cuadrado hasta el final. Y eso está mal. No, para el Hubbard, tenemos que cambiarlo a Hubbard. Y para los oprimidos necesitamos cambiar para descansar. Y luego recuerda copiar el tamaño de la imagen porque los botones han cambiado. Así que haz clic con el botón derecho aquí y haz clic izquierdo para pegarlos aquí para la imagen, solo asegurándote de que la visibilidad sea ninguno que haya comprobable, así que no bloquea el botón. Y ahora si pasamos al menú I, así que ahora mismo necesitamos tener este botón funcionando también cuando hacemos clic en él. Entonces, si voy por aquí y selecciono esto en me gusta, necesita abrir el inventario. Entonces si solo compila y vuelvo al jugador. Entonces aquí, cuando abrimos el inventario, lo que podemos hacer es hacer otro evento personalizado y vincularlo a aquí. Entonces funciona para el botón. Bueno, hagamos clic con el botón derecho aquí y evento personalizado, y digamos abrir inventario. Enchufa esto aquí. Entonces esto solo se dispara cada vez que se está presionando nuestro botón, abrir inventario. Así que volvamos a la interfaz de usuario principal. Y aquí para este botón otra vez, al igual que antes, haz clic derecho y di Get Owning, capa. Así que estamos consiguiendo al jugador porque aquí es donde está nuestra lógica, es Poseer Player sobre referencia de capa. Y ahora vamos a conectarlos juntos. Y aquí ahora podemos decir inventario abierto. Entonces ahora debería funcionar. Vamos a compilar todo. Vamos a hacer clic en Reproducir. Y si hago clic en la interfaz de usuario aquí puedes ver el inventario que se abre. Y si hago clic en ojo, también se abre. Entonces lo es, Oh, está funcionando correctamente. Y el hover sobre los botones también funciona. Ahora no puedes ver si estamos cambiando categoría porque no tenemos ningún artículo. Entonces es muy difícil de ver. Entonces, si quieres verlo solo rápido, puedes ir al controlador del reproductor aquí donde agregas tus ranuras de inventario. Muy buen método para ver las cosas es usar la cadena de impresión de aquí en el bucle cuando estamos creando los widgets, vamos a arrastrar desde aquí y guardar la cadena de renta. Ahora lo que queremos imprimir en la pantalla, vamos a imprimir todos los widgets que estamos creando. Entonces a partir de aquí, conectado aquí, y va a crear este get display name. Entonces te va a mostrar el nombre para mostrar de estos widgets. Ahora vamos a hacer clic en play. Y puedes ver que crea los widgets para ambos jugadores. Cuando haces clic en AI y luego haces clic en Categoría, crea widgets. Si haces clic en otro, puedes ver que aumenta en número para los widgets, pero estamos recordando limpiar a los niños. Entonces no es porque haya 79 de ellos engendrados. Sólo están estos engendrados ahora mismo. Esto está funcionando correctamente. Cada vez que hago clic en una categoría, está creando nuevos widgets. Entonces, lo único que necesitamos ahora es trabajar también con los artículos. Así que compilemos todo, guardemos todo y pasemos a la siguiente lección. 34. 5.09 Vuelve a añadir artículos existentes para diseñar: Bien, entonces ahora lo que queremos hacer es agregar artículos existentes al inventario. Entonces en este momento realmente no tenemos artículo alusivo ni nada por el estilo. Pero lo que podemos hacer si vamos al controlador del jugador, ahora mismo, solo estamos agregando los widgets de slot de inventario. estamos creando, y luego los estamos agregando a esa grilla aquí. Pero cuando cambiamos, cuando borramos a los hijos y cambiamos categoría y volveremos a dibujar los widgets de slot. También tenemos que volver a dibujar todos los artículos, así que mostrando los artículos y podemos hacer esto aunque no tengamos saqueos de artículos en este momento. Entonces antes agregamos los widgets aquí a los hijos o al inventario de la grilla. Tomemos ahora esto y solo voy a empujar esto aquí abajo solo por un poco para que podamos agregar algunas cosas más dentro de aquí. Entonces lo que queremos hacer es que queremos obtener el borrado del inventario. Entonces, si volvemos al inventario, solo como recordatorio, vamos al inventario de componentes. Aquí hicimos las tres categorías. Entonces hizo la categoría de armas, y es una matriz de la ranura de inventario. Entonces, si hacemos clic en el Plus, podrás ver que consiste en un artículo y luego la cantidad del artículo, la ranura de inventario y el índice. Y si volvemos a hacer clic en el plus, tenemos otro ítem. Entonces ahora tengo dos artículos. Y así como así. Entonces dependiendo de todos los artículos que tengamos, necesitamos dibujarlos también aquí para que no los extrañemos durante el redibujo aquí. Ahora primero vamos a obtener todos estos tres. Borrar aquí. Así que vamos a arrastrar del inventario. Y digamos categoría de armas. Como otra vez, digamos Alimentos o categoría de alimentos. Y escribamos categoría pociones. Entonces ahora tenemos todas estas tres categorías. Ahora vamos a arrastrarlo aquí. Y lo que queremos hacer es que queremos arrastrar de uno y decir conjuntos de elementos de matriz. Queremos establecer el elemento array, queremos establecer el índice del ítem que ya está dentro de aquí. Y para hacer esto como podemos simplemente arrastrar desde aquí y decir set array elements porque también necesitamos hacerlo para esos. Entonces realmente depende de qué categoría de inventario hayamos seleccionado. Aunque. Tenemos que seleccionar el de comida, entonces tenemos que hacerlo por la comida. Seleccionamos una de las pociones, entonces tendríamos que hacerlo para las pociones. Entonces aquí, arrastra nuevamente del inventario y vamos a obtener la categoría seleccionada, categoría de inventario aquí. Así que ahora en lugar de hacerlo aquí, déjame hacer clic en Alt y dar click aquí para desconectarlo. Entonces déjame arrastrar desde aquí y usar un nodo llamado Select. Entonces dejando esta, entonces cuál es la selección, inicialmente solo selecciona una opción. Entonces depende de lo que tengas enchufado dentro de aquí. Si enchufa un número, éste selecciona un número. Si enchufa por ejemplo esta enumeración, la conecta aquí, puede ver que es selecciona entre los elementos dentro de esta enumeración. Así que vamos a enchufarlos. Entonces las armas con las armas, comida y las pociones. Entonces lo va a hacer aquí. Se va a tomar la categoría de inventario seleccionada. Se va a echar un vistazo a lo que depende este valor. Aquí. Si recuerdas, si vuelves a la categoría de inventario de UI. Y así aquí cuando hacemos clic en la categoría, establece la categoría y luego volvemos a dibujar. Aquí. Dice la categoría. Y luego redibujamos todos esos widgets de tragamonedas. Entonces, dependiendo de esta categoría seleccionada aquí en el controlador del reproductor, va a seleccionar ese valor. Entonces, si seleccionaste la categoría de pociones, va a tomar esta categoría de pociones y luego registrar esta categoría de pociones dentro de aquí. este momento es genial. No sé por qué. Es un poco buggy. Déjame simplemente desconectarlo aquí, enchufarlo de nuevo a aquí. Entonces funciona solo para que tenga ese color. Bien, Entonces por ejemplo, si seleccionamos la categoría de alimentos, va a tomar esa categoría de comida aquí y sacarla de aquí. Y ahora es la categoría de alimentos. Entonces, ¿cuál es el artículo aquí? El artículo es que solo podemos conseguir, conseguir este de aquí y decir todavía. Y podemos obtener un elemento de la matriz y seleccionar este llamado copia. ¿Qué artículo queremos obtener? ¿Qué elemento dentro de esta matriz queremos obtener? Simplemente, solo queremos obtener el índice de slot. Recuerde, estamos haciendo un bucle a través de los widgets de ranura. Estamos haciendo un bucle 0-15, así que creamos 16 slots. Y para cada una de esas ranuras, queremos obtener el artículo de cada una de esas ranuras. Y luego queremos ponerlos dentro de aquí. Entonces para el índice de slot, nuevamente, justo desde aquí y agrégalo aquí. Entonces este es el índice. Recuerda que va a circular 16 veces. Entonces va a establecer el índice. Entonces el primero va a ser cero, luego uno, luego 2345, y así sucesivamente, hasta 15, así que crea 16. Ahora para el artículo, podemos tomar este artículo aquí y decir descanso. Y ahora para esta matriz aquí, esta ranura de inventario. Pero podemos hacer es que podemos derivar de aquí y decir hacer ranura de inventario. Así que arrastrando este elemento aquí, así que solo vamos a restablecer el elemento dentro de esa matriz. No queremos perder nuestro artículo. Entonces, dependiendo de qué ranura tengamos, por ejemplo, la primera ranura está en el índice cero. Vamos a conseguir ese artículo y enchufarlo aquí. A pesar de que está vacío, no importa. Solo estamos recibiendo toda esa información y los estamos volviendo a enchufar aquí. También estamos tomando la cantidad, enchufándolos aquí solo para asegurarnos no perdemos ninguna información. Y para el espacio de inventario, recuerda que estamos creando espacios de inventario, así que voy a arrastrarlo aquí, iniciar sesión aquí. Y para el índice de slot, de nuevo, solo arrastra desde aquí y conéctalo a aquí porque realmente no queremos usar el antiguo slot de inventario. Esta es la ranura que se despejará. Cuando decimos niños claros, realidad ya no queremos usar eso así como el índice de slot, nosotros limpiando todo aquí. Así que vamos a usar el nuevo índice de ranura y luego inventario widget de ranura y sólo para ocultar estos bolígrafos porque no creo que se vea bien. Puedes hacer clic en él y hacer clic en Ocultar pines desconectados, y ahora se verá mucho mejor. Y eso fue en realidad. Entonces tomemos esta lógica aquí. Volvamos a agregar nuestra interfaz de usuario a la cuadrícula aquí. Y para ello, estos son los widgets. Para que puedas hacer clic y arrastrar desde éste y volver a agregar los widgets aquí. Y todo se ve perfecto. Ahora, en este momento realmente no podemos ver una diferencia porque realmente no estamos actualizando la interfaz de usuario. Así que en el inventario las ranuras no estaban realmente configurando la imagen del artículo aquí demasiado visible o cualquier cosa. Esto lo vamos a hacer en la siguiente lección. Pero justo antes de hacer esto, en realidad organicemos todo aquí. Entonces voy a saltar adelante y te voy a mostrar cómo lo organicé. Bien. Así que muy rápido seguí adelante y organizé todo. Puede ver que están teniendo todas las notas redireccionadas, así que solo asegúrate de hacer doble clic en todas ellas. También puede seleccionar algunos elementos y hacer clic en Q en el teclado. Esto enderezará los elementos. Así que me aseguraré de organizar tu código solo para que puedas entenderlo mejor. Vamos a compilar todo por ahora y pasemos a la siguiente lección. 35. 5.10 Muestra de artículo en el inventario: Bien, así que ahora sigamos adelante y actualicemos la interfaz de usuario de la ranura de inventario. Cuando perdemos un artículo. Aquí para las ranuras de inventario, vamos a la gráfica y eliminemos todo aquí. Ahora hagamos un evento personalizado. Y este, voy a llamar a la interfaz de usuario de ranura de inventario de actualización. Lo que queremos hacer es simplemente establecer esta imagen aquí dependiendo del artículo que saqueemos y la cantidad del mismo también. Entonces dando click aquí, agreguemos dos variables distintas. El primero es el artículo, así es la información del artículo. Este es el ítem, llamémoslo ítem. Y el segundo es la cantidad de ese artículo. Vamos a cambiarlo en un entero, y vamos a compilar. Entonces para este artículo aquí, tomemos de la cantidad y digamos, ¿es igual a cero? Porque si el artículo es igual a cero, lo que significa que no hay ningún artículo en ese espacio de inventario. Realmente no queremos mostrar el icono del elemento o este texto aquí, porque realmente no tenemos un artículo en esa ranura. Entonces si la cantidad es igual a cero, tomemos esta imagen aquí e ilustremos desde aquí y digamos establecer esta habilidad. Y pongamos la visibilidad a oculta si no tenemos ningún artículo. Y hagamos eso también para el texto. Y se puede ver que no tengo una variable para el texto. Volvamos a Designer. Da click en el texto y ponlo esta variable para que podamos verlo como una variable. Alice ahora toma ese texto, veamos si lo podemos encontrar. Y no lo encuentro. Y en realidad se llama cantidades de artículos de imagen. Se supone que es texto. Entonces cambiemos esto en texto. Vuelve a la gráfica, y es ésta. Así que vamos a arrastrarlo aquí y digamos establecer visibilidad a oculto también. Bien, entonces ahora ambos están puestos a ocultos si la cantidad es cero. No obstante, si la cantidad no es cero, queremos establecer esta imagen. Entonces tomemos este icono aquí, la imagen aquí. Y digamos Set brush from texture. Y pongamos este icono. Entonces, si es falso, si realmente, si no es cero, en realidad tenemos un artículo ahí dentro. Vamos a configurar el icono de esta imagen aquí en nuestro inventario. Entonces, ¿cuál es la imagen para ello? Recuerda que tenemos el artículo y vamos a arrastrar desde aquí y decir break. Por lo que puedo ver la información sobre este artículo aquí. Y vamos a arrastrar esta miniatura. Tenemos la miniatura, por lo que podemos usar eso como la liga de texturas , mostrar, pines desconectados si quieres ocultar el resto de la información. Ahora recuerda establecer la visibilidad a visible, porque ahora mismo está oculta. Sólo puedo copiar esto aquí y conectarlo. Y ahora podemos establecer la visibilidad no demasiado visible, pero a ninguno hit comprobable. Recuerda que si lo configuras demasiado visible, entonces estás bloqueando estos espacios de inventario. Tú, si lo configuras a ninguno hit comprobable. Significa que no puedes interactuar con este ícono. Y no creo que necesitemos interactuar con nada de este ícono, así que solo voy a configurarlo en ninguno hit comprobable por ahora. Lo mismo para el texto. Tenemos que establecer la cantidad. Entonces tomemos el texto aquí y arrastremos y digamos set text. Y pongamos el texto a la cantidad aquí. Así que arrastra este inicio de sesión de cantidad aquí, y va a crear automáticamente esta función de dos textos para ti. Ahora hagamos doble clic solo para organizarlo un poco mejor. Y ahora para estos textos, ahora hemos fijado la cantidad. Ahora para mi inventario, lo que me gusta hacer es si este valor es uno, no quiero mostrar ese número, así que va a estar oculto así. No obstante, si la cantidad es de dos, va a mostrar el número. Entonces si es uno, realmente no quiero mostrar el número uno. Ahora vamos a la gráfica aquí. Y lo que podemos decir es que podemos arrastrar de la cantidad otra vez y decir, si esto es mayor que uno, entonces queremos mostrar así rama. Si es mayor que uno, entonces queremos tomar este texto. Entonces déjame copiar esto aquí arriba, el texto. Y queremos decir ninguno golpeó comprobable. Entonces quiero mostrar este texto si es, si el número es mayor que uno, así como así. No obstante, si el número no es mayor que uno, copiemos esto. Entonces quiero poner éste a oculto. Entonces, si solo tenemos un ítem, no va a mostrar este texto. Si tenemos dos o más elementos, va a mostrar este texto y eso fue en realidad. Entonces déjame hacer doble clic y hacer que esto se vea mejor también. Asegúrate de que tu código esté organizado. Se puede ensuciar muy rápido, y te llevará mucho tiempo organizar todo. Entonces esto fue todo. Vamos a compilar. Y ahora tenemos que llamar a esta función. Realmente no lo hemos aguantado en ningún lado. Entonces ahora volvamos al controlador del reproductor. Dentro del controlador del reproductor aquí estamos agregando el ítem a esa matriz, y luego estamos agregando los hijos. Y ahora también necesitamos actualizar la interfaz de usuario porque sí, se está agregando el ítem. Sin embargo, no estamos viendo ningún cambio porque no estamos actualizando la interfaz de usuario aquí se actualizó la interfaz de usuario, estamos dentro de la ranura de inventario de WB. Así que recuerda en el controlador de jugador para cada una de las ranuras aquí estás creando ese widget, estás creando espacio de inventario WB aquí. Así que en realidad podemos usar esto. Podemos arrastrar desde esta ranura de inventario y podemos decir actualizaciones, interfaz de usuario de ranura de inventario. Este es el evento que acabamos de crear. Ahora hagamos doble clic, hagamos notas de redirección. Voy a tomar esto un poco aquí arriba. Entonces no está por encima de mi función, no dentro de mi función, así como esto. Y ahora necesitamos enchufar el artículo y la cantidad y el artículo. Recuerda, recuerda que ya dijiste esto aquí llegamos al ítem. El artículo aquí, fíjelo, la cantidad también, enchúfelo. Hagamos doble clic y hagamos que se vea un poco mejor. Y así, compilemos y guardemos. Ahora realmente no podemos probarlo con los artículos porque no tenemos un sistema de saqueo. Pero lo que podemos hacer es si vamos a los componentes del inventario y dentro del inventario, y solo para las armas por ejemplo simplemente puedes hacer clic en el signo más y agregar un artículo aleatorio. Aquí. En los artículos, solo agreguemos algo, por ejemplo esto, no conozco esta palanca aquí. Y podemos llamarlo realmente no importa, trabajo, lo que sea. Y ahora fijemos la cantidad en uno. Y el índice de slot todo es, realmente no importa. Así que solo recuerda, solo asegúrate de tener el ícono y tienes la cantidad. Así que vamos a dar clic en Reproducir y ver si esto funciona. Entonces haciendo clic en el inventario, puedo ver a mi inteligente. Si cambio la categoría, puedes ver que la puedo ver. Vuelvo a las armas. Puedo ver mi carnicero. Entonces esto está funcionando correctamente. Ahora, también podemos probarlo aquí en las pociones. Vamos, agreguemos una poción. Vamos a hacer clic en el ítem. Y ahora vamos a ir aquí, seleccionar una de las pociones, por ejemplo, esta poción de manera, establecer la cantidad en cinco, por ejemplo para que podamos ver si aparece el texto. Y si hacemos clic en Play, clic en AI, y damos clic en las pociones. Ya ves, puedo ver que tengo cinco cocientes. Si hago clic en las armas, puedo ver la comida de mi arma. No tenemos comida. Y ahora puedes ver que está funcionando correctamente. Bien, así que sigamos adelante y eliminemos esta que acabamos de crear, y las armas y los cocientes. Y ahora compilemos todo, guardemos todo, y sigamos adelante. 36. 6.01 Interactuando con los artículos: Comencemos ahora a interactuar con los ítems. Entonces primero, vayamos a los planos y al jugador. Y vamos a crear una nueva acción de entrada donde podamos hacer clic en un botón y cargar los elementos. Entonces hagamos clic derecho, vayamos a entradas y en protección. Y llamemos a este botín o puedes llamarlo interactuar. Eso depende de ti. Pasemos a los contextos de mapeo. Y dentro de aquí, vamos a hacer clic en el nuevo plus aquí en las asignaciones. Vamos, voy a minimizar todo esto aquí para el nuevo, agreguemos el laúd, laúd. Y voy a presionar aquí y presionar mi botón EE en el teclado. Sólo voy a usar los artículos IPA y soluto. Y para el disparador va a dar click en el más. Y aquí, configurarlo en presionado y presionado, solo se asegura de que no pueda enviar spam a este botón e. Entonces, si la mantienes presionada, no corre todo el tiempo. Así que presionar solo significa ejecutarlo una vez cuando haga clic en E. Bien, Así que esto se hace aquí. Ahora vamos a cerrarlo. Acude al jugador. Y aquí en el jugador, déjame solo esto un poquito. Y aquí abajo, puedo decir IA carga y tener este evento aquí. Ahora lo que podemos hacer es lo que aludiendo necesitamos para ejecutarlo a través del servidor. Hasta el momento hemos estado trabajando con un cliente porque todo esto era UI. Pero sin embargo, cuando saqueas artículos, solo asegúrate de ejecutarlo a través del servidor porque quieres verificar si los clientes realmente pueden perder los artículos. Así es como evitas hacer trampa. Entonces cuando juegas aquí y juegas como servidor, entonces este, este de aquí es el servidor. Este de aquí es el cliente. Digamos que los clientes son los clientes conectados a tus amigos a tu servidor. Van a presionar E. A pesar de que aquí no hay artículos. Tenemos que verificarlo. Al hacer clic en E aquí como cliente, esta información va al servidor. El servidor comprueba si esta línea está parada sobre un artículo o no, y luego va a enviar esa información de vuelta al cliente en este momento no estoy parado en ningún artículo. Voy a dar click en E. Esa información necesita ser enviada al servidor. El servidor va a decir: No, no estás parado en ningún artículo, no vas a perder nada. Pero esa información va a ser enviada de vuelta al cliente. Le va a decir al cliente que no estás parado sobre ningún artículo y aquí no voy a perder nada. Siempre tomando el código, verificándolo con este servidor, y solo asegurándose de que los clientes no estén engañando y enviando esa información de vuelta al cliente. Entonces, hasta ahora hemos estado trabajando con los clientes porque era UI, pero ahora en realidad es lógica de juego. Entonces por aquí, en vez de simplemente escribir el código directamente desde aquí, porque si solo escribes una cadena de impresión aquí, de nuevo, muy bueno solo escribir una cadena de impresión para ver qué pasa si hago clic en play. Y aquí hago clic en e como servidor, dice Hola. Si voy al cliente y hago clic en E como cliente, dice Hola. Para que el cliente y el servidor puedan ejecutar este evento. Quiero ejecutar el código solo a través del servidor, así que no voy a escribir el código aquí. Sin embargo, vamos a hacer un nuevo evento personalizado llamado botín de servidor. Y éste va a correr a través del servidor confiable. Y luego voy a ejecutar el evento del servidor aquí arriba. Entonces, cuando al cliente le gusta en E, también va a correr a través del servidor. Entonces, para los artículos, permítanme simplemente colocar un artículo aquí. Entonces para los artículos, vamos a colocar, no sé, este plátano aquí, algo al azar. Y coloquemos este Cleaver. Voy a colocarlos uno encima del otro, así que me dice en cuántos artículos estoy parado. Y voy a poner un artículo solo por aquí, así como esto para que podamos probarlo. Entonces lo que podemos hacer aquí para el saqueo es que podemos hacer clic derecho y decir que se superpone. Actores, ¿solo buscando cuántos actores estamos superponiendo? Y ahora te va a preguntar, ¿qué actores quieres que sea? Quiero que sea la base de artículos que creamos antes. Entonces vamos a tomar los actores superpuestos de GED cuando estabas parado en los ítems, va a comprobar cuántos actores estamos superponiendo. Voy a tomar esto y decir longitud y luego preguntar si esto está por encima de cero. Así que solo quiero ejecutar este código cada vez que en realidad estoy parado sobre un elemento porque si la longitud de la actriz superpuesta es cero, entonces no estamos parados en nada y no quiero ejecutar mi código. Entonces, si está por encima de cero, en realidad quiero ejecutar mi código. Esto es para este video. Simplemente hagamos clic en la cuerda naranja aquí y veamos si todo está funcionando correctamente. Y lo que quiero imprimir, Solo vamos a imprimir la longitud de los actores olímpicos, lo que significa ¿cuántos actores estamos superponiendo en realidad? Así que haciendo clic en la obra. Y aquí como el servidor, voy a ir a estos dos elementos haciendo clic en IE, se puede decir si llueve también, realidad estoy parado sobre dos elementos ahora, si voy aquí y hago clic en e, no pasa nada porque recuerden que solo estamos imprimiendo cuando está por encima de cero. Si voy por aquí y laúd esto, dice un artículo así que está funcionando correctamente. Y si hago esto como el cliente también, se puede ver que el servidor imprime la información, lo cual es muy bueno porque solo queremos ejecutar este código a través del servidor y todo está funcionando correctamente. Entonces, eliminemos esto y sigamos en el siguiente video. 37. 6.02 Inicial Añadir a la lógica de inventario: Bien, entonces aquí es donde lo dejamos y agreguemos ahora la lógica inicial para agregar el ítem. Entonces volvamos a los componentes y al interior del componente de inventario. Y aquí necesitamos hacer un evento personalizado llamado add to inventory. Así que hagamos clic con el botón derecho en el evento personalizado agregar al inventario. Y éste, podemos correr a través del cliente porque ya lo ejecutamos a través del servidor y estamos interactuando con un ítem. Y ahora vamos a ejecutarlo a través del cliente porque esto es en realidad UI y necesitamos agregar el icono al inventario. Agregar al inventario que se ejecuta a través del cliente y el servidor se están ejecutando propietario del cliente, lo siento, y confiable. Ahora vamos a correr hasta aquí. Cl, agregar al inventario. Y lo que necesitamos agregar es solo el artículo. Así que dando clic aquí, dando clic en el Plus, vamos a encontrar la base del ítem como el tipo de variable porque queremos agregar ese ítem específico o un alusivo. Ahora podemos arrastrar de esto y agregarlo aquí también. Y vamos a compilar. Y ahora para el jugador, ya podemos tomar este inventario y podemos decir agregar al inventario, así como esto. ¿Y de qué artículo estamos hablando? Estamos hablando este ítem específico que estamos superponiendo. Así que vamos a arrastrar aquí, hacer algo de espacio. Ahora, a lo que queremos aludir, puedes hacerlo con dos métodos dependiendo de qué juego estés creando. Entonces aquí, cuando haces clic en E y quieres perder un artículo, puedes saquear todos los artículos a la vez. Puedes hacerlo así. Así que puedes tomar aquí y decir For Each loop, y puedes, para cada uno de esos artículos, puedes agregarlos al inventario. No obstante, para mi juego, solo quiero saquear un artículo a la vez. Entonces voy a arrastrar de aquí y decir que consigue una copia. Entonces no lo voy a hacer un bucle. Sólo voy a conseguir el primer artículo. No necesitamos un plugin aquí. Entonces voy a tomar el primer artículo con el que lo estamos superponiendo, y luego voy a agregar eso al inventario. Entonces tomando este ítem aquí, ahora, realmente no podemos conectarlo directamente porque este es un objeto actor. Y si lo enchufamos aquí, no funciona porque esta es una referencia de objeto base de elemento BP. Entonces dos cosas distintas. Entonces ahora sabemos que esta es la basada en ítems. Nosotros, lo hicimos aquí en el filtro. Filtramos que lo único con lo que interactuaremos aquí es el artículo basado para escuchar. Y ellos consiguen, podemos arrastrar desde aquí, y podemos obtener la referencia del artículo. Ahora, nuevamente, solo hicimos interfaces para el reproductor y para el controlador del reproductor. Entonces hagamos uno nuevo. Hagamos clic con el botón derecho en los planos y la interfaz de blueprint. Hagamos uno para la base del artículo. Y aquí Hagamos doble clic y para la función, obtenga la referencia del ítem. Y ahora son las salidas. Recuerda que aquí escribes el plano al que quieres hacer referencia. Quiero hacer referencia a mi base de artículos, y voy a llamarlo ítem. Ahora vayamos a la base de artículos y agreguemos esta interfaz. Vaya a items, item based here in the Class Settings and here at the interface item base compile over here in the interface, haga doble clic aquí y establezca la referencia como la autorreferencia porque estamos dentro de la base de item. Ahora volvamos al jugador. Y aquí podemos arrastrar ahora y decir obtener referencia del artículo. Ahora tenemos esa referencia de artículo y ahora podemos conectarlo a esto aquí y agregarlo al inventario. Vamos, vamos a juntarlos aquí, hacer que se vea un poco mejor, algo así aquí incluso puedes hacer doble clic aquí y hacer que se vea así. Estamos obteniendo el primer artículo que estamos superponiendo el ancho y obteniendo esa referencia y luego agregarlo al inventario nuevamente, si quieres saquear cada artículo en el que estás parado con solo un clic. Hay que tomar esto, digamos para cada bucle. Y luego, para cada bucle, obtenga la referencia del artículo. Y luego puedes enchufar todos y cada uno aquí. Entonces va a recorrer esto hasta que no haya más artículos para saquear y luego va a parar. Entonces solo quiero saquear un artículo a la vez. Estoy satisfecho con eso, con todo, y déjame volver al inventario ahora. Entonces por aquí, ahora tenemos un ítem al que estamos aludiendo. Entonces, si solo haces clic en Imprimir y solo conectas aquí, y solo conectas esto con esto aquí. Así que en realidad solo puedes ver qué, qué está pasando. Así que vamos a hacer clic en Reproducir. Ahora. Aquí está el servidor. Voy a ir a esto aquí, como en E y va a decir carne. Entonces sabe qué elemento uno pierde. Ahora estoy parado en dos artículos, va a perder. El primero se superpone con. Si hago clic en él, va a decir Cleaver. Si voy aquí a un lado y sólo interactúo con el plátano, va a decir plátano. Impresionante. Entonces todo está funcionando. Entonces aquí lo que quiero hacer es simplemente hacer clic derecho y promover esto a una variable y llamarlo ítem para agregar. Y para este también quiero obtener la información del ítem y convertirla en una variable. Habrá mucho más limpio para nosotros más adelante. Así que recuerda que hicimos obtener información del artículo, sin embargo necesitamos un nombre. Y recuerda nuevamente, en la base del ítem, ya hicimos este nombre del ítem, esta variable aquí. Y cuando lo hicimos en la base del artículo o en cada uno de los niños, tuvimos que escribir el nombre del artículo aquí arriba. Entonces, si solo lo abro normalmente así, recuerda cuando hagas una variable en la clase de blueprint padre, la basada en item, todos los hijos heredarán esta variable. Y ahora puedes ingresar aquí en los valores predeterminados de clase y poner los nombres para todos ellos aquí. Así que en realidad ya tenemos ese nombre. Entonces vayamos al componente de inventario. Y ahora derivemos del ítem y obtengamos esa variable de nombre de ítem. Y ahora podemos enchufarlo aquí y obtener la información de ese artículo. Solo para esta, solo voy a hacer clic derecho promueve una variable y solo voy a llamarla ítem para agregar información. Entonces tenemos la información del ítem que queremos agregar, y eso fue todo por ahora. Así que vamos a compilar todo y pasemos a la siguiente lección. 38. 6.03 Agrega artículo al inventario: Bien, entonces ahora necesitamos algo de lógica para agregar el artículo al inventario. Entonces aquí hicimos este complemento al inventario. Después de esta lección, vamos a verificar si este artículo es apilable o no. Si no es apilable, vamos a crear una nueva pila en el inventario y agregar ese artículo. Si el artículo es apilable, vamos a verificar si ya tenemos ese artículo en el inventario y agregarlo a la pila. Si no, vamos a hacer un nuevo stack. Vamos a hacer esto y el siguiente, sin embargo, por sólo dos, entremos en un mejor flujo. Necesitamos crear una función primero antes de poder hacer todo esto. Así que vamos a crear una nueva función aquí, llamarlo agregar artículo al inventario. Entonces esto es, esta función aquí es el paso final. Entonces, cuando creamos una nueva pila, o encontramos una pila parcial y agregamos ese ítem, esta función se llevará a cabo. Entonces digamos que creamos una nueva pila con éxito. Entonces vamos a agregar ese artículo al inventario después de hacer una nueva pila. Entonces este es el paso final. Vamos a hacer éste antes de hacer todo lo demás, porque esto va a hacer las cosas mucho más suaves. Vamos a agregar el inventario de Artículo dos. Aquí para la entrada, hagamos una referencia a la información del ítem. Entonces el artículo que queremos agregar y también la cantidad del artículo. Entonces eso es un entero y llamémoslo cantidad. Y luego recuerda para los artículos también tenemos las ranuras de inventario. Entonces si volvemos al controlador del jugador y por aquí, para cada ítem, también tenemos como si tuviéramos el ISM, tenemos la cantidad de artículo, también tenemos la ranura de inventario, y tenemos el índice de inventario, así podemos usar eso aquí también. Entonces volvamos al componente aquí y cuatro aquí. Cambiémoslo a espacios de inventario. Seleccionemos esta referencia de Widget Blueprint, y llamémoslo, llamémoslo ranuras de inventario. Y éste, llamémoslo índice de ranura. Y también estoy haciendo uno nuevo. Y necesitamos saber a qué inventario lo estamos agregando? ¿Lo estamos agregando a la categoría de armas? ¿Lo estamos agregando a esta categoría de alimentos o a esta categoría de pociones? Así que hagamos uno nuevo aquí también. Y busquemos espacios de inventario. Debido a que estos son el tipo de estructuras de ranuras de inventario. Entonces ranura de inventario, vamos a cambiarlo en una matriz, y llamemos a este inventario. Entonces depende de qué categoría de inventario estemos dentro. Queremos agregar ese artículo dentro de esta categoría. Bien, entonces tomemos este inventario ahora y establecemos el elemento array. Ahora, fuera de esta función, se decidirá a cuál de estas tres se sumará. Vamos a tomar esa información y establecer el elemento array. Ahora, ¿cuál es el índice? El índice es simplemente este índice de ranura. Muy sencillo. Ahora para este ítem, nuevamente, igual que antes, tomemos esto y escribamos make. Ahora para este artículo, queremos agregar este artículo aquí. Queremos agregar esta cantidad, queremos agregar esta ranura de inventario y queremos agregar este índice de tragamonedas. Entonces este es el artículo que ahora estamos agregando al inventario. Y en realidad es tan simple como esto, esta función está terminada. Hay un detalle muy pequeño, pequeño. E imagínese si ya estamos dentro de esta categoría. Entonces digamos que estoy saqueando un arma, estoy cargando todos pasan. Y ya estoy dentro de eso. Al igual que ya tengo mis categorías de inventario de armas seleccionadas. Entonces, cuando cargue un arma, debería actualizar instantáneamente mi inventario. Así que en realidad puedo ver que he cargado el arma aquí solo para asegurarme de que el inventario esté actualizado. Entonces el inventario en el que ya estoy, así que si pierdo un arma y ya estoy dentro de la categoría de armas, queremos asegurarnos de que la interfaz de usuario esté actualizada para que pueda ver ese cambio de UI. Entonces, lo que queremos hacer, queremos tomar ese ítem y rompamos esto aquí. Y quiero tomar la categoría de ese artículo que estoy cargando. Ahora quiero ver si este artículo que estoy cargando tiene la misma categoría que la que he seleccionado. Al parecer. Si es así, quiero actualizar la interfaz de usuario. Si no es así, no quiero actualizar la interfaz de usuario. Y la razón por la que no quiero actualizar la interfaz de usuario es porque recuerden, si acabo de bucle esta comida aquí y se carga aquí y estoy, estoy, he seleccionado la categoría de armas. Realmente no necesitamos actualizar esta interfaz de usuario porque se ha agregado a la comida y estoy dentro de las armas así que realmente no necesitamos actualizar nada en este momento. Recuerda que cuando haces clic en nuevas categorías aquí, automáticamente actualizará todas las ranuras que ya estamos actualizando cuando hacemos clic en las categorías de inventario, sin embargo, solo queremos actualizar si ya estamos dentro de esa categoría porque no se está actualizando en ningún lado al instante. Entonces aquí voy a comprobar si esa categoría de ítem aludida es igual aquí, igual enum, si es igual a la categoría seleccionada que tengo ahora mismo. Y si es así, tomemos una sucursal aquí. Si es igual, entonces recuerde en el widget de ranura de inventario, hicimos nuestro teléfono, hicimos nuestro evento llamado actualizaciones, interfaz de usuario de ranura de inventario. Y el artículo tenemos que enchufarlo, es decir este artículo y esta cantidad. Entonces ahora va a actualizar esa interfaz de usuario cada vez que cargue mi artículo. Entonces, si ya estoy dentro de esa categoría seleccionada y ese artículo se va a agregar a esa categoría de inventario seleccionada. Va a actualizar instantáneamente mi interfaz de usuario para que pueda ver el cambio, ¿verdad? Así que ahora creé algunos nodos redirigir y así es como se ve, un poco más organizado, organízalos antes, solo asegúrate de que tu código esté más organizado. Y ahora cuando estés satisfecho con el resultado, vamos a compilar ahora, guardar todo, y sigamos adelante. 40. 6.05 Encontrar una pila parcial: Bien, bienvenido de nuevo. Entonces ahora vamos a la segunda parte donde vamos a crear una macro para encontrar una pila parcial que ya existe en el inventario. Hasta el momento, lo que hemos hecho es tratar de ver si el artículo es apilable o nueces. Y si no es apilable, estamos creando una nueva pila y agregando, agregando ese artículo al inventario. Entonces ahora si el artículo es apilable, intentemos encontrar en el inventario si ya tenemos ese artículo. Ahora lo que podemos hacer igual que antes aquí, donde tenemos el inventario. De hecho, vamos a copiar todo esto aquí. Y voy a copiar este bucle también. Sólo tienes que copiar esto, volver atrás y pegarlo. Entonces básicamente, igual que antes, vamos a tomar esta categoría para este artículo. Entonces vamos a seleccionar la categoría. Porque dependiendo de cuál sea la categoría para el artículo, queremos mirar dentro de ese inventario específico, por ejemplo, si estamos aludiendo a una poción, vamos a seleccionar la poción y vamos a recorrer el inventario de las pociones para ver si ya tenemos ese artículo que estamos cargando. Entonces, si esto es cierto, solo vamos a conectarnos aquí al plan de ejecución y para encontrar si tenemos este ítem específico que estamos aludiendo, podemos derivar de esto y romperlo. Y aquí en este ítem, Vamos a romperlo de nuevo. Y recuerda aquí tenemos un nombre para el artículo. Entonces voy a arrastrar desde aquí y decir igual y seleccionar éste para el texto igual exactamente. Ahora bien, si el nombre es exactamente igual a este nombre para el ítem, incluso, voy a tomar esto, romper esto también, y conectar el nombre aquí arriba. Ocultar pines desconectados para este también. Y hagamos una rama también. Entonces ahora lo que estamos haciendo, estamos recorriendo el inventario, por ejemplo, pociones. Entonces, para cargar una poción, y luego por cada elemento dentro de allí, en realidad estamos comprobando si este nombre existe para el artículo. Estamos aludiendo. Si el nombre existe, eso significa que el artículo ya está en el inventario y aquí hemos encontrado una pila parcial. Lo segundo que tenemos que hacer solo para asegurarnos en este momento solo estamos comprobando si el artículo es el inventario. Pero, ¿y si el artículo ya ha alcanzado el tamaño Max Stack? Entonces por ejemplo pociones, digamos que puedo perder cinco pociones de salud. ¿Y si? Y si, sí, tengo el artículo en mi inventario, así que encontré una pila parcial. No obstante, ya tengo pilas llenas en eso, en ese escalonamiento que tengo. Digamos no solo verificar el nombre, sino también verificar la cantidad que tenemos en el inventario. Entonces, por aquí, hagamos clic en este y mostremos la cantidad de artículo para ese artículo dentro de nuestro inventario. Y esta cantidad de artículo debe ser inferior al tamaño máximo de pila de este artículo aquí. Así que vamos a mostrar el tamaño Max Stack y vamos a conectarlo aquí. Entonces, para encontrar una pila parcial en el inventario, necesita tener exactamente el mismo nombre que el artículo dentro de nuestro inventario. Y el artículo dentro de nuestro inventario debe ser, la cantidad debe ser menor que el tamaño máximo de pila para el artículo. De lo contrario, necesitamos encontrar una nueva pila y agregar edición a una nueva ranura de inventario. Vamos a hacer clic aquí, solo hay que esconderlos pines conectados para este también. Aquí, vamos a arrastrar y decir final booleano. Entonces usamos éste y booleano. Entonces, si el nombre es exactamente el mismo y la cantidad es menor que el tamaño máximo de la pila, entonces podemos seguir adelante decir que hemos encontrado una pila parcial. Así que vamos a crear un nuevo booleano. Y a éste que voy a llamar tiene que crear stack. Voy a establecer este en falso aquí porque ahora encontramos una pila parcial y la cantidad de, la cantidad no es, no es mayor que el tamaño Max Stack. Es más bajo que el tamaño Max Stack, lo que significa que podemos agregar elementos en la parte superior de la pila. Entonces tiene que crear stack set a false y podemos seguir adelante y editar el ítem. Entonces antes de hacer esto, igual que antes, seleccionemos todo esto aquí. Vamos a hacer clic derecho y convertirlo en una macro. Y a esta macro, vamos a llamar a find partial stack, así aquí. Y para la salida otra vez, necesito agregar un, un artículo de inventario. Así que arrastrando este año. Entonces para la salida, necesito todos estos. De nuevo, al igual que lo que hice con el create new stack. Así que sigamos adelante y hagamos clic en Buscar pila parcial. Vamos a agregar un par de variables aquí. El primero está equilibrado, así que encontramos un ítem y este es un pin de ejecución aquí. Y vamos a arrastrar esto por ahora. Entonces artículo encontrado aquí en la pila parcial, nuevamente, al igual que antes, artículo a agregar. Y entonces tenemos la cantidad. Para agregar, entonces tenemos el índice de slot y el último aquí tenemos la Variable de inventario. El primer artículo es la información del artículo. Este es el artículo que queremos agregar. Esa cantidad es sólo un entero. El índice de ranura es solo un entero también. Y la ranura de inventario, en realidad me olvidé de agregar. Permítanme agregar el espacio de inventario, que es el Plano Widget. Así que las ranuras de inventario y la selección de este widget blueprints. Poniéndolo aquí arriba, sólo voy a ponerlo por encima del índice de slot aquí. El inventario son las ranuras de inventario, luego seleccionándolo como una matriz. Y éste, voy a nombrar no encontrado. Entonces, si no encontramos un artículo, y esta es una pluma de ejecución. Y también quiero hacer una nueva llamada loop completa, igual que antes, con la que podemos hacer algo aquí. Así se completa el bucle, no se encuentra. Vamos a compilar y guardar todo. Bien, así que volvamos aquí y solo reorganicemos las cosas un poco dentro de esta macro. Entonces esto es lo que tienes hasta ahora. Y si no tenemos que crear un stack, podemos seguir adelante y agregar esto al inventario. Entonces, ¿qué queremos agregar? ¿Qué queremos añadir? Es este artículo aquí, artículo, artículo para agregar información. Vamos a copiar esto y pegarlo aquí, la cantidad para el artículo. Arrastremos este artículo para agregar igual que antes y digamos cantidad. Toma esta cantidad para obtener artículo y agrégala aquí. Para el espacio de inventario. Tenemos este inventario aquí para que podamos usar la ranura de inventario y el índice. Vamos a arrastrarlos a aquí también. Entonces tenemos de nuevo el inventario. Es éste de aquí. Vamos a arrastrarlo y conectarlo. Bien, entonces aquí mismo estamos comprobando si la cantidad de artículo en el inventario es menor que el tamaño Max Stack para el artículo de saqueo o el artículo aludido aquí. Y si es así, hemos encontrado un ítem y no necesitamos crear un stack. Entonces déjame salir aquí ahora antes de que hagamos algo aquí, permítanme agregar otra lógica para asegurarme. Entonces por aquí, ahora mismo hay algo que no estamos comprobando. Si tomo esta cantidad para agregar el artículo y necesito preguntar, ¿es menor o igual al año? Déjame tomar el artículo para agregar información, romperla y tomar el tamaño máximo de pila conectado aquí. Ahora, antes de que estemos revisando el artículo de inventario, ahora mismo, estoy comprobando la cantidad que estoy aprendiendo ahora mismo. ¿Es más de lo que puedo poner dentro de esta pila? ¿O puedo llenar toda esta cantidad en esa pila que acabo de encontrar? Así que solo asegurándome de que no voy a crear otra pila aquí. Entonces déjame conectarlo. Entonces, si esta cantidad a agregar es menor o igual al tamaño máximo de la pila, entonces no vamos a crear ninguna pila. Así que permítanme solo agregarlo aquí también. Y permítanme en realidad solo agregar el artículo primero. Y luego decir que tiene que crear stack se establece en false. Y déjame seguir adelante y romperla. Entonces en este momento no tenemos ningún pin de ejecución de break, así que déjame darle click y vamos a crear otro llamado break loop. Ahora vamos a conectarnos al bucle de freno. Y así aquí abajo, si es cierto, como la cantidad de artículos que necesitamos agregar, si en realidad no es menor que el tamaño Max Stack, lo que significa que en realidad necesitamos crear otra pila. Así que vamos a agregar lo que tengamos en esta pila actual. Y luego vamos a crear otra pila. Así que de nuevo, igual que antes, recuerda aquí y el nuevo stack de Craig, tu calculaste lo que te quedaba aquí. Así que en realidad necesitamos hacer lo mismo. Vamos a copiar y pegar esto. Entonces voy a copiar todo esto aquí, yendo al Gráfico de Eventos aquí. Y podemos pegarlo aquí. Esto aquí lo que necesitamos agregar al inventario nuevamente, al igual que antes, necesitamos agregar la cantidad es el tamaño Max Stack para este artículo aquí. Y conectemos el artículo. Conectemos la ranura de inventario, el índice de ranuras, así como el inventario. Y entonces vamos a establecer este booleano en true. Entonces tenemos que crear una nueva pila para agregar esta cantidad restante de artículos. Entonces, pongámoslo a verdad. Y entonces voy a arrastrar y enchufarlo aquí porque esto se remonta a este break loop. Hagamos doble clic aquí. Vamos a hacerlo limpio. Así que ahora volvamos a esta fina pila parcial y hagamos algo aquí en el completo. Y también recuerda tomar este bucle de descanso dentro de aquí. Así que nos estamos asegurando de que en realidad estamos rompiendo el bucle para el completo. Tomemos nuestras manos para crear stack y hacer una rama. Entonces ahora estamos preguntando, ¿tenemos que hacer una pila o nueces? ¿Qué lo configuramos durante este bucle? Si tenemos que crear una pila, queremos establecer esto en item not found, porque tenemos que crear una nueva pila. Si no tenemos que crear una nueva pila, entonces el loop se acaba de completar, así como esto. Vamos a ponerlo aquí abajo, así como esto. Entonces, si tenemos que crear una nueva pila, significa que no se encuentra el ítem. Y si no se encuentra el ítem, vamos a arrastrarlo aquí abajo y crear una nueva pila. Por lo que ahora no se encuentra el artículo. Tenemos que crear una nueva pila. Bien, así que si no se encuentra el ítem, vamos a crear nuevo stack y el loop está completo, es justo si ya encontramos el stack y no necesitamos hacer nada para poder tocar un sonido o lo que nos guste. Entonces ahora volvamos a la fina pila parcial. Nos falta un último paso aquí. Digamos, dijimos aquí tenemos una pila que es igual al nombre del artículo que aludimos, y la cantidad del artículo dentro de ese inventario es menor que el tamaño Max Stack para el artículo al que estamos aludiendo. Si eso es falso, tenemos que hacer algo igual que antes. Vamos a tomar este bucle aquí y decir más, más. Entonces vamos a incrementar en uno. Y al igual que antes, nos estamos asegurando de que esto aquí sea menor que la cantidad de slots que tenemos en nuestro inventario. Hagamos una rama. Y si eso es cierto, si es menor que la cantidad, en realidad, vamos, vamos a enchufarlo aquí. Y si en realidad es menor que la cantidad de slots, vamos a seguir adelante y otra vez, simplemente bucle aquí y encontrar un, encontrar un ítem en el siguiente índice, ¿verdad? Así que lo he organizado sólo un poquito. Entonces ahora es mayor que la cantidad de slots que tenemos. Entonces tomaremos esto tiene que crear stack para que se establezca en true porque realmente no podemos encontrar ningún elemento que podamos agregar este ítem aquí también que estuviera aludiendo. Entonces tenemos que crear un nuevo stack y arrastrar de esto y seguir adelante y enchufarlo al break. Porque ahora tenemos que romper el bucle. Y ahora cuando sigamos adelante y rompemos el bucle, recuerda cuando esté completo, dice, sí, hay que crear una pila y eso pasará al ítem no encontrado, que luego repasa y crea una nueva pila. Bien, así que asegurémonos de que esto realmente funcione y veamos si tenemos algún error como antes. Vamos a guardar todo. Ahora los plátanos tienen el conjunto apilable a true, así que podemos probarlo con los plátanos. Y pongamos esto aquí también. De hecho, vamos a comprobar lo que dijimos de los plátanos. Entonces yendo a la info del ítem que tiene el plátano, si lo maximizamos, tiene el tamaño máximo, tamaño pila de diez. Entonces vamos a duplicar este plátano aquí y sosteniendo Alt y arrastrando, voy a duplicarlo aquí. Entonces para este, voy a establecer la cantidad del artículo en cinco. Y para esta, voy a ponerla en cuatro. Y luego volvamos a copiarlo. Y pongamos de nuevo este uno a cinco. Vamos a guardar todo. Intentemos reproducirlo para el servidor. Si hago clic en AI, hago clic en E aquí. Se le ha agregado a la comida aquí. Sí, tenemos cinco plátanos. Doy click en él aquí. Dice Porque hay algo con la cantidad. Lo estamos poniendo mal aquí. Y si hago clic en la oreja, se establece en cinco, entonces hay algo mal. Es solo establecer la cantidad aquí. Volvamos. Y claro, veo el bicho enseguida aquí en el hallazgo de pilas parciales. En realidad no estoy agregando aquí en la cantidad. Entonces déjame borrar esto, en realidad solo déjalo ser. Lo que tenemos que hacer es tomar esta cantidad de artículo y luego necesitamos editar con lo que ya esté dentro del inventario, por supuesto. Entonces tomando esto aquí y tomando diciendo agregar, así más pérdida, la cantidad que ya está dentro del inventario. Entonces déjame enchufarlo aquí. Y déjame enchufar esto en el uno a T2 ed y compilando. Y justo antes de probar el juego, así que aquí en el bucle, completa, vamos a destruir el artículo igual antes porque estamos agregando esto al inventario. Déjame alejar todo esto un poco de aquí. Déjame pegar esto. Y para que se complete el bucle, sigamos adelante y destruyamos los artículos. Entonces déjame redimensionar esto por ti. Déjame dar click en E aquí. Ahora estamos perdiendo cinco o cargando nueve. Ahora debería decir diez y por sólo 10.5. Y sospecho En realidad, esto es correcto ahora, pero sospecho que tenemos un problema de nuevo con un retraso, igual que lo hicimos aquí con la creación de una nueva pila. Y retrasamos el código. Si lo encuentro aquí, retrasamos el código. Hagamos lo mismo porque sospecho que en realidad está haciendo lo mismo aquí. Entonces, cuando no se encuentra el artículo y está creando una nueva pila, vamos a retrasarlo en 0.03, al igual que antes. Vamos a probarlo antes de reorganizar todo, vamos a hacer clic en Reproducir. Y voy a mirar esto. Voy a volver aquí, voy a esto, voy a cargar esto también. Entonces ahora dice cinco , sigue molestando. Y ¿y si trato de aumentar el retraso? ¿Y lo intento otra vez? Ahora, está funcionando perfectamente. Entonces, en realidad es este retraso. Tenemos que arreglar este retraso aquí, tal vez algo 0.05. No soy fanático de poner esto a alto porque en realidad puedes sentirlo en el juego si lo pones demasiado alto. Sólo estoy tratando de que funcione muy bien. Entonces 0.05 funciona bien, puedes tenerlo así, tal vez 0.04 semanas también. Pero ahora funciona perfectamente. Entonces ahora en realidad los estamos agregando. Entonces si hacemos clic en play, y me encantaron los que tienen cinco. Entonces éste, voy a dejar éste también el cual tiene cinco. Ahora bien, si cargo este, también se agrega al inventario. Y si aludiera esto y esto, los consigo dentro de mi inventario. Porque recuerden que teníamos dos cuchillos y a cuchillas, esta necesita ser incrementada en el retraso. Entonces tal vez 0.05 es un número mejor. Cambiemos esto aquí en el stack create new también, solo para que no obtengamos este error. Y como prueba final, volvamos a correr el juego. Déjame cargar esto aquí, da cinco. Déjame cargar este medio. Esto es 2.2. Eso es correcto. Este glúteo esto, y todo esto es correcto. Ahora, increíble. Entonces eso fue todo por crear una pila parcial. Así que vamos a hacer esto un más organizado para este retraso aquí son solo, vamos a colocarlo aquí abajo. Entonces lo que estamos haciendo aquí, ahora creamos una nueva pila y también estamos encontrando una pila parcial si ya la tenemos en el inventario y el artículo es apilable, lo contrario si no se encuentra. Entonces ya tenemos un stack completo. Vamos a crear una nueva pila para ello. Y aquí en el bucle completo, puedes destruir el artículo. Incluso puedes tocar un efecto de sonido, y lo haremos más adelante. Así que adelante y organiza tu código solo para que se vea mejor, y eso fue todo por ahora, guarda tu trabajo y sigamos adelante. 41. 6.06 Optimizar el inventario: Hola y bienvenidos de nuevo. Entonces ahora mismo quiero optimizar el inventario antes de continuar. Entonces hay un pequeño bicho. Ahora bien, si aludo a éste de aquí y a éste de aquí, son cuatro más cinco, deberían ser nueve plátanos. Y eso es correcto. No obstante, si vuelvo a hacer clic en Reproducir y los aludio sin abrir el inventario, dice ninguno correctamente. Si pierdo el último y dice diez, el primer mazo, y para el siguiente stack, no se nota de esa manera. Simplemente muestra cuatro. Debería ser 10.4. Entonces aquí hay un error. Esto se debe a que no estamos creando todos estos widgets a menos que abramos el inventario. Para que puedas ver si vuelvo a golpear play. Y si abro el inventario, lago en todas las categorías, cierro el inventario y aludo a todo aquí. Se puede ver cuando abro el inventario, en realidad funciona. Entonces, la razón por la que está pinchando desde el principio es porque no estamos abriendo el inventario. Y eso es porque además no estamos mostrando todos los o creando todos estos espacios a menos que abriéramos el inventario. Ese es un pequeño error que queremos arreglar. Y también quiero arreglar y optimizar el inventario porque sé que el código puede ser mejor y hagámoslo de la mejor manera. Pero pasemos al controlador del reproductor. Vayamos a PC **** aquí abajo. Y hasta el momento tenemos este llamado Create, widgets de slot de inventario. Quiero separar la creación aquí. Entonces, qué tenemos que hacer en lugar de crearlo solo para la categoría de inventario seleccionada. Necesitamos crear esto para todas las categorías aunque no hayamos abierto el inventario. Y luego quiero un evento separado donde mostremos los widgets de slot de inventario. Así que en realidad creamos todo esto desde el principio. Entonces, cuando abrimos el inventario y hacemos clic en diferentes categorías, no seguimos creando nuevas. No necesitamos, solo necesitamos crear esto una vez aquí y agregarlos a la matriz. Y luego solo mostramos los slots ya creados cuando estamos dando clic en las categorías. Entonces está esta optimización que podemos hacer. Así que permítanme hacer clic derecho, ir a eventos personalizados y crear uno llamado Display, inventory, widgets de slot. Y hagamos uno nuevo aquí corriendo a través de los clientes. Así que corre en ser dueño del cliente confiable. Entonces para este, solo queremos mostrar los widgets. Entonces, en realidad es esta última parte del código. Déjame copiar esto aquí. Voy a hacer clic en Control X para cortarlo y pegarlo aquí abajo. Ahora necesitamos una referencia al inventario aquí. Entonces voy a hacer clic aquí y buscar inventario, inventario AAC, y llamarlo inventario. Y este, claro niños también necesita estar aquí abajo porque éste es solo para mostrar las ranuras de inventario. Entonces esta es una palabra específica que se muestra, y voy a agregarla aquí abajo. Y también necesitamos este bucle aquí. También lo necesitamos aquí arriba. Así que solo voy a copiarlo y lo voy a pegar aquí abajo porque necesitamos recorrer todos los widgets y mostrarlos. Entonces necesitamos esto también. Y también necesito esta categoría seleccionada. Voy a copiarlo, y voy a pegarlo aquí abajo. Y conectemos el inventario. Ahora para estas filas y columnas, recuerden que acabamos de decir aquí dividido por cuatro. Vamos a cortar esto aquí, pegarlo aquí abajo, conectarlos así, y también conectar el índice a este año. Y por aquí para este inventario, lo que podemos hacer es simplemente derivar de esto y decir, consigue, ¿qué obtenemos? Apenas obtenemos este índice aquí. Y tomemos esto y digamos descanso. Y ahora para el artículo que queremos actualizar aquí para el inventario, vamos a arrastrarlo y enchufarlo. La cantidad es solo esta también. Ahora para este contenido aquí, esto es recordar ante el contenido o el hijo a grid aquí el contenido es este widget que creamos. Sin embargo, recuerde este widget, lo estamos guardando dentro de esta matriz en la ranura de inventario y el índice de ranura aquí y la ranura de inventario. Permítanme simplemente borrar esto aquí. Y puedo arrastrar desde la ranura de inventario y agregarlo aquí al contenido, así como actualizar la interfaz de usuario del slot de inventario. Este índice de diapositiva aquí. Entonces déjame conectarlo y agregar algunos nodos de reencaminar. Entonces es bueno mirarlo. Bien, entonces aquí agregué nodos de reencaminar. Entonces, lo que estamos haciendo como antes, estamos limpiando a los niños, y luego estamos recorriendo todos los widgets que creamos. Estamos obteniendo ese índice dependiendo del inventario que queramos ver ahora mismo. Y luego estamos tomando esa cantidad de artículo, iniciándolos sesión, actualizando la interfaz de usuario, y también mostrando todos estos widgets de lotes de inventarios. Entonces ahora con este evento, solo necesitamos crear todos los widgets. Porque ahora cuando hacemos clic en la categoría de inventario, widgets. En realidad solo los estamos mostrando sin crearlos todo el tiempo. Entonces aquí arriba en realidad queremos arreglar esto también, porque en este momento no está creando todos los widgets. Se puede ver aquí. Se trata únicamente de crear el widget para la categoría de inventario seleccionada. Entonces, lo que podemos hacer aquí, podemos alargar así. Y justo lo que hicimos aquí arriba con las categorías, acabamos de conseguir todas las categorías. Vamos a copiar esta. Obtiene que los nombres de fila de una tabla para todas las categorías. Entonces estas son las tres categorías que tenemos. Y vamos a obtener la longitud de las categorías. Entonces ahora va a imprimir tres porque tenemos tres categorías. Permítanme hacer clic aquí, ascendido a una variable y llamarlo un monte de categorías. Y esta es la cantidad que vamos a recorrer. Así que vamos a hacer un bucle que muchas cantidades para crear todos los widgets. Así que déjame crearlo. Entonces no es demasiado confuso. Y en cuanto a la longitud de cantidad de categorías, en realidad voy a arrastrar de aquí y decir menos uno porque vamos a bucle a partir de cero. Entonces 01.2, así que no necesitamos esto para decir tres l, Así vamos a rentar cuatro veces. Entonces tenemos tres categorías. Empezamos a imprimir desde cero. Entonces 01.2, por eso estoy restando por uno. Y permítanme hacer otra variable aquí llamada contador temporal. Entonces vamos a usar esta para saber cuántas veces vamos a hacer un bucle. Entonces si esta cantidad de categorías, tomemos este contador temporal, ponlo en un entero, digamos cortar aquí. Entonces, si el contador temporal es menor o igual a la cantidad de categorías, así que recuerde que el contador temporal comienza desde cero, el valor predeterminado es cero. Entonces si es menor o igual, la cantidad de categorías, que es dos, entonces podemos seguir adelante y recorrer las categorías. Por aquí. Solo conectémoslo y recorremos y bajemos aquí, en lugar de usar la categoría de inventario seleccionada, voy a eliminar esto y usemos nuestro contador temporal en su lugar. Puede hacer clic con el botón derecho en esto aquí, y puede hacer clic en Cambiar tipo de pin, y puede cambiarlo a un número entero. Ahora estamos usando un entero y vamos a conectar esto aquí. Entonces como pueden ver aquí, permítanme arrastrar esto. Permítanme borrar todo esto. Arrastra esto aquí, también solo desconecta esto por ahora. Entonces lo que va a pasar es que vamos a empezar con cero porque las cuentas temporales son por defecto el valor es cero. Vamos a seleccionar esta opción aquí, las armas. Y ahora se va a preguntar, es la cuenta temporal o menor o igual, la cantidad de categorías, que es dos en este caso. Entonces primero va a hacer un bucle al primero, luego vamos a agregar uno a este contador, entonces dice uno. Y luego va a recorrer esto, luego va a recorrer esto. Y cuando llegue a tres, cuando llegue a tres, entonces ésta en realidad será mayor que la cantidad de categorías, que es dos. Y entonces ya no va a hacer bucle. Entonces esto es lo que estamos haciendo. Entonces conectemos este inventario a estas tres categorías. Y por aquí, volvamos a conectar esto a la matriz. Y también volvamos a conectar esto a las consigue por aquí. Vamos a compilar. Ahora cuando completemos el bucle para el primero, tomemos el contador temporal, dragón y digamos más, más. Entonces estamos agregando uno al mostrador. Y luego vamos a recorrer esto de nuevo. Así que vamos a llamarlo desde aquí, crear widgets de ranura de inventario. Crear widgets de ranura de inventario. Y tenemos que volver a establecer el inventario. Podemos simplemente arrastrar de éste y enchufarlo a aquí. Entonces ahora está funcionando. Y si echamos un vistazo aquí, esta no queremos, así que simplemente eliminemos las aquí y voy a crear algunas notas de reencaminamiento, así que es mejor mirar eso. Entonces ahora lo he organizado aquí como pueden ver, para que puedan ver el código aquí. Entonces primero estamos obteniendo ¿ cuántas categorías tenemos? Y estamos restando por uno porque el contador temporal empieza en cero. Por lo que tenemos tres categorías en total a partir del 01.2. Entonces estas tres categorías, las vamos a recorrer aquí. Y cada uno vamos a recorrer la categoría. Vamos a crear widgets. Y vamos a agregar, al igual que antes, las categorías o las ranuras de inventario a esa matriz de categorías que hemos seleccionado. Y nuevamente, ahora estamos seleccionando tan pronto como un contador temporal. Y cuando terminamos el loop para el primero. Entonces cuando terminamos el bucle para la categoría de armas, vamos aquí al completo, estamos agregando uno al contador temporal. Entonces empieza en cero, luego llega a uno. Y luego estamos recreando los widgets de tragamonedas de inventario aquí. Entonces va a ejecutar esto otra vez. Y ahora el contador temporal es igual a uno. Y entonces realmente va a crear todos los widgets para la categoría de comida. Y luego cuando esté terminado, lo va a poner en dos. Y luego va a crear para las pociones. Y cuando llegue a tres aquí, entonces va a decir falso. Y lo que podemos hacer aquí al final, cuando hayamos creado todos los widgets aquí, podemos mostrar el inventario, así podemos llamar a este llamado Inventario de Display, widgets de slot. Así que permítanme llamar al cliente uno aquí arriba antes de que me olvide de exhibir aquí. Y el inventario lo podemos arrastrar aquí. Y llamémoslo por aquí cuando se pliega. Cuando hayamos creado todos los widgets, Digamos display, inventario, widgets de slot. Y para el inventario, vamos a tomarlo aquí arriba, conectado aquí con los nodos de reencaminamiento y vamos a compilar y guardar todo. Entonces tenemos esta lógica también para el jugador. Así que vamos en realidad no aquí, vamos a ir al jugador de planos. Y dentro de aquí, recuerden al principio dijimos inicializar inventario. Estamos redimensionando su raza. Eso está bien. Y por aquí estamos creando los widgets de categoría que está bien. Y las ranuras de inventario también. Entonces esto es correcto. Ahora volvamos al inventario. Creo que tenemos alguna lógica que necesitamos cambiar ahí. En el inventario de componentes. Tenemos este cuando hacemos clic en una categoría en el inventario. Y en realidad puedo volver solo por aclaración. Para la categoría de inventario cuando la presionamos, recuerda, cuando la presionamos, establecemos la categoría de inventario. Y si haces doble clic aquí, es este código aquí. Estamos creando los widgets de slot de inventario. Ahora hemos optimizado el inventario, así que vamos a eliminar esto y en su lugar simplemente vamos a mostrar widgets de slot de inventario. Así que ahora solo podemos mostrarlos y el inventario está optimizado. No tenemos que hacerlo, no tenemos que crear esos widgets una y otra vez. Bien, así que vamos a probarlo antes de hacer otra cosa. Y creo que lo tenemos todo. Todo se ve bien. Vamos a compilar, vamos a ahorrar. Vamos a hacer clic en Reproducir y ver si tenemos algún bicho. Así que déjame repasar y saquear todo igual que antes y ver si realmente puedo cargarlos ahora. Entonces si hago clic en abrí mi inventario, se están cargando correctamente. Lo mismo para estos de aquí. Ahora, cuando cambias la categoría de inventario, en realidad es solo mostrar lo que ya hayamos creado. Entonces esto es mucho para optimizar ahora. Está muy optimizado con el error de inventario corregido y con el inventario optimizado. Pasemos a la siguiente lección. 42. 7.01 Agrega la operación de arrastre y solta: Bien, así que ahora estamos listos para arrastrar artículos del inventario. Así que pasemos a la interfaz de usuario y vayamos a la ranura de inventario. Entonces lo que vamos a hacer ahora es que queremos arrastrar del inventario. Entonces si hago clic en Reproducir, quiero, si tengo un ítem aquí, quiero arrastrar este ítem y puedo soltarlo en el suelo. Entonces esto es lo que estamos tratando de hacer. Entra en el espacio de inventario. Vamos a la gráfica. Y dentro de esta gráfica, vayamos a funciones y hagamos clic en este botón Sobrescribir. Ahora aquí vamos a bajar y veamos aquí, vamos a elegir esta llamada en el botón del ratón hacia abajo. Y crea esta función aquí. Y aquí lo que queremos hacer simplemente es simplemente arrastrar de aquí y decirlo secta, arrastrar si se presiona. Entonces tienes que hacer esto para que pueda detectar el botón de tu mouse y pinchando aquí y voy a hacer click en mi botón izquierdo del mouse, o simplemente lo puedes encontrar aquí. Y para el evento mouse, conectémoslo con los eventos puntero. Y para el valor de retorno, conectémoslos aquí. Bien, vamos a compilar ahora. Y nuevamente en las funciones de aquí arriba, haga clic nuevamente en la anulación. Y busquemos en arrastre detectado. Entonces es aquí arriba en arrastre detectado. Seleccione este aquí. Y aquí, vamos a imprimir cadena y ya se puede ver lo que está pasando. Así que sólo voy a saludar. Vamos a compilar y vamos a hacer clic en play. Y si abro mi inventario y hago clic aquí, puedes ver que dice Hola. Si hago clic y arrastre, ahora realmente detecta que estoy arrastrando. Y dice aquí bajo. Así que ahora podemos agregar algún código dentro de aquí. Entonces, antes de hacer algo, consigamos una referencia al jugador y al controlador del jugador. Así que de nuevo, estamos dentro de una interfaz de usuario y para nosotros se puede decir capa Get Owning. Esto te conseguirá el controlador del reproductor. Y si usas get Owning Player Pawn, esto te conseguirá, el personaje del jugador obteniendo este de aquí para que el controlador del jugador arrastre de él diciendo que obtiene controlador de capa. Y nuevamente, esto es desde la Interfaz Blueprint que podemos usar. Vamos a hacer clic derecho promocionado a una variable y llamarlo controlador de diseño. Y nuevamente, haga clic con el botón derecho diciendo Get Owning layer en este momento. Para que podamos sacar al jugador y justo desde aquí y decir consigue capa Eric top. Éste obtiene su referencia. Y obteniendo la referencia del jugador podemos hacer clic derecho, promover tu variable y guardar la capa en. Bien, entonces lo que estamos tratando de hacer aquí ahora cuando hacemos clic en play. Entonces lo que quiero que hagas es lo que tengo este artículo. Solo quiero obtener la información dentro de este ítem porque cuando arrastre aquí, quiero mostrar el ícono que estoy arrastrando desde el peón del jugador. Volvamos a conseguir el inventario , inventario. Vamos a desplazarnos hacia abajo y seleccionar este inventario. Y al igual que antes, necesitamos todas las categorías. Entonces, si escribes categoría, puedes obtener la categoría de armas y la categoría de alimentos, y luego la categoría de poción. Y al igual que antes, necesitamos el inventario seleccionado porque necesitamos saber qué inventario hemos seleccionado actualmente. Así que al igual que antes, hagamos clic derecho y escojamos la función de selección aquí, seleccione nodo, cuello, el inventario selecto. Y nuevamente, solo conecta todos estos inventarios. Entonces dependiendo de lo que hayamos seleccionado aquí, vamos a arrastrar y decir consigue. Y ahora te va a preguntar qué índice de franjas horarias de inventario quieres obtener. Recuerda que estamos en la ranura de inventario. Entonces ya tienes este índice de ranura variable. Así que vamos a conectarlo aquí. Entonces ahora estamos obteniendo el índice en el que estamos dando clic. Ahora antes de ejecutar el código de arrastre de detección, solo asegurémonos de que tenemos un artículo porque no quiero que el arrastre funcione para las ranuras de inventario hay vacías. Así que tomando aquí diciendo descanso. Y así para esta cantidad de artículo, no es igual. Para que podamos escribir esto. Si no es igual a cero, entonces quiero que el código siga adelante y corra. Sin embargo, si es cero, no queremos que se ejecute el código porque el espacio de inventario está vacío. Pero ahora lo más importante, esta es la función que es muy importante. Vamos a hacer clic derecho y a la derecha crea la operación de arrastrar y soltar. Entonces éste va a arrastrar el icono y te va a preguntar, cuál es el drag visual predeterminado, que es el icono que estamos arrastrando. Recuerda de nuevo, estamos dentro de la ranura de inventario. Así que solo podemos tomar este de aquí, el inventario de imágenes o en realidad el artículo de imagen aquí. Conéctalo a aquí. Y ahora tenemos el artículo enchufado, solo asegurándonos de que la ranura desde la que estamos arrastrando no esté vacía. Así que en realidad tenemos un icono que estamos arrastrando. Bien, así que eso fue todo. Ahora conectemos aquí. Y para la operación, conectémosla así. Puedes dar click aquí, dar click en el pellizco desconectado de altura solo para hacerlo más limpio y déjanos probarlo. Así que vamos a compilar, vamos a hacer clic en Reproducir. Y si arrastro así, no pasa nada. Si voy por encima y cargo esto, arrastre. Ya puedes ver que estoy arrastrando el icono. Se ve genial. Si hago esto para el plátano e.g y arrastre, ahora, estoy arrastrando el plátano. Entonces ya puedes ver que está funcionando. Pero ahora necesitamos que el código funcione donde realmente dejamos caer el ítem. 43. 7.02 Disminuye el artículo de un inventario: Bien, entonces ahora queremos dejar caer el ítem y para hacerlo, vamos a la interfaz de usuario principal aquí. Y dentro de aquí, vamos a la gráfica. Y nuevamente, igual que antes, y las funciones dan click en la anulación. Y vamos a seleccionar este llamado en drop. Porque inicialmente, cuando estás jugando el juego aquí y tomando un artículo y soltándolo del inventario, realidad lo estás dejando caer encima de tu interfaz de usuario principal. Vamos a escribir este código dentro de aquí. Ahora antes de que pueda funcionar, puedes ver aquí si imprimo una cadena en la UNDRIP para la interfaz de usuario principal, necesita hola. Para que veas que el código está funcionando. Sin embargo, en este momento no es por arrastrar y soltar. Se puede decir que no es decir hola. El código que estamos escribiendo aquí en realidad no está funcionando. Entonces para que funcione, puedes ir a la ranura de inventario. Y dentro de aquí, en la gráfica aquí, para que se detecte el on drag, necesitas tomar el controlador del reproductor. Ya hicimos esa referencia. Toma el controlador del reproductor, llévalos a la variable principal de la interfaz de usuario. Y en realidad necesitas establecer la visibilidad del Canvas. este momento si haces clic en el lienzo, puedes ver que la visibilidad no es comprobable, y en realidad necesita ser visible aquí para que funcione. Pero no queremos cambiarlo por defecto porque visible significa que bloquea tu mouse cuando juegas. Así que solo queremos cambiarlo cada vez que estemos dejando caer el artículo. Así que volvamos a la ranura de inventario. Y aquí, tomemos esto y digamos establecer visibilidad. Y queremos establecer la visibilidad a visible. Entonces eso es correcto. Tomémoslo aquí y déjelo caer justo antes de que terminemos la operación. Estamos haciendo visible este menú I. Y vamos a crear algunos nodos de reencaminamiento y conectémoslo así. Bien, así que vamos a compilar y volvamos a la interfaz de usuario principal. Y ahora si tratamos de caer, vamos a saludar. Así que vamos a jugar aquí. Vamos a este Cleaver. Vamos a arrastrar y soltar. Y puedes ver que dice Hola. Entonces ahora el código está funcionando aquí en la función Andhra para la interfaz de usuario principal. Entonces aquí antes de empezar, igual que antes quiero una referencia a mi jugador. Así que hagamos clic derecho y digamos Obtener capa de posesión sobre, vamos a arrastrar y decir Obtener referencia del jugador. Y vamos a conectarlo juntos. Y vamos a hacer clic derecho y promover esto a una variable y diciendo capa en. Ahora lo que debería pasar cuando dejo caer el icono aquí al nivel, necesita volver a generar elemento. Entonces ahora necesito generar el artículo. Necesitamos alguna lógica de desove. Por lo general, el desove lo hacemos en el controlador del jugador. Entonces vayamos al controlador del reproductor. Y en el controlador del reproductor, por cierto, puedes ver que creé comentarios para todo solo para ti cuando te doy todo el código. Entonces eso es muy agradable de ver y de crear comentarios. Si no lo sabes, puedes un poco más, sobre algunos de los elementos y hacer clic en C en tu teclado, y eso crea comentarios. Así que muy agradable estar organizado así. Bien, así que bajemos aquí y hagamos un nuevo evento personalizado con el botón derecho del ratón. Y llamemos a este artículo de una sola gota. Y para dejar caer el artículo, necesitamos generarlo en el nivel. Así que arrastra aquí y di engendrar actor de plus. Y ahora necesitamos el último del ítem que estamos desove. Vamos a arrastrar esto, enchufarlo aquí, esta transformación de bonos también. Y para el manejo de colisiones, solo puedes decir trata de ajustar la ubicación pero siempre engendrar. Y cuando generamos el artículo, también queremos generar la cantidad para él. Así que arrastrando de aquí, ahora esto es un, un actor se opone. Así que no podemos simplemente decir set item quantity, como lo tenemos aquí en el, si recuerdas en la base de artículos, si voy a la base de artículos, tenemos esta cantidad de artículo establecida. No obstante, solo necesito una referencia al ítem primero si puedes decir get item reference, la que hicimos antes con la interfaz. Y ahora se puede decir set item una vez a t Ahora también necesitamos establecer la cantidad cuando generamos la misma dependiendo de cuantos dejamos caer del inventario. Voy a arrastrar esto y conectarlo aquí. Y solo voy a arrastrarlo justo arriba o justo debajo de la clase, la clase solo voy a llamarla ítem en su lugar. La cantidad de artículos es buena y la transformación de desove también es buena. Bien, así que normalmente cuando generamos cosas, pasamos por el modo de juego. Y la razón por la que pasamos por el modo de juego, si recuerdas el compendio multijugador, ese modo de juego siempre existe en el servidor, nunca existe en el cliente. Así que pasando por el modo de juego, nos aseguramos de que el cliente no genere cosas al azar y haciendo trampa. Entonces tenemos que pasar por el modo de juego. Este, en realidad ahora estamos trabajando al revés. Necesitamos generar a partir del componente de inventario. Sin embargo, empecé aquí. Entonces en realidad está más claro dónde está la cosa, el objetivo principal aquí es usar este llamado actor spawn y estamos respondiendo al ítem. Entonces ahora vamos a trabajar al revés. Pasemos al modo juego, porque el modo de juego necesita llamar a este evento. Así que volvamos. Planos de un modo. Abramos el editor de planos completo. Y aquí hagamos un nuevo evento personalizado llamado request. Dejar caer el artículo. Y este necesita llamar a esto desde el controlador del reproductor. Así que permítanme hacer clic aquí y hacer una variable para el controlador del reproductor. Y es PC **** abajo, así es como lo llamamos. Y digamos controlador de diseño. Y desde el controlador del reproductor, vamos a arrastrar y llamar a esta función de elemento de caída. Somos evento que hicimos. Para los artículos. Vamos a hacer clic y arrastrar y soltar. Y para esta transformación de bonos, en realidad vamos a arrastrar de aquí y decir hacer transformar. Por lo general, hago la transformación en el Modo de Juego y más ubicación nuevamente y simplemente hago clic y arrástralo y lo suelto en el elemento de solicitud. Ahora, aquí no necesitamos replicar y ejecutar en Servidor, porque recuerda de nuevo, porque recuerda de nuevo, ese modo de juego siempre se ejecuta en el servidor. No puedes ejecutar ninguna cosa de clientes dentro de aquí, el cliente no puede acceder al modo de juego. Todo o crear aquí siempre se ejecuta en el servidor, así que no necesitamos configurarlo para replicarlo al servidor aquí. Bien, entonces el último paso, esto solicita el artículo de caída debe ejecutarse desde los componentes, el Componente de inventario. Volvamos a los componentes. Y todo, todo empieza aquí, así que en realidad estamos trabajando al revés. Así que aquí vamos a hacer clic derecho y crear un nuevo evento personalizado. Llamémosle a éste, baja. Hola Tim. Aquí. Hagamos uno nuevo corriendo por el servidor llamado drop item. Así como así, corre en servidor confiable. Y a este vamos a llamar al servidor un elemento de caída del servidor. Y aquí tenemos que llamar al del Modo Juego. Entonces voy a hacer clic derecho y decir que obtiene un modo y luego arrastra desde aquí y necesitamos obtener la referencia del modo de juego. Sin embargo, no creo que hayamos creado ninguna interfaz, Interfaces Blueprint para el modo de juego. Entonces hagámoslo aquí. Puedes hacerlo solo si quieres o hacer ejercicio, y puedes hacerlo conmigo. Ahora, hagamos clic con el botón derecho, vayamos a planos, creamos una Interfaz de Blueprint, un modo. Vamos a abrirlo y aquí hacer una nueva función llamada gets Game Mode reference. Ahora bien, aquí tenemos que decir ¿a qué estamos tratando de hacer referencia? Estamos tratando de hacer referencia a la ciudad de los bichos. Este, este es nuestro modo de juego, y llamémoslo modo. Ahora vamos a compilar y guardar todo. Y volvamos al Modo Juego, yendo a la Configuración de Clase y luego agregando esa interfaz, modo de juego de interfaz. Ahora hagamos clic aquí y las interfaces, y llamemos a la autorreferencia. Entonces ahora hemos definido lo que es esta variable. Ahora podemos volver al componente de inventario nuevamente. Podemos arrastrar aquí y decir obtiene una referencia de modo. Ahora vamos a conectarlo. Y desde aquí queremos ejecutar el evento request drop item que hicimos. Bien, así que ahora vamos a conectarlos aquí. Conectemos el controlador del jugador, el artículo, la cantidad de artículo y la ubicación. Y ahora los tenemos aquí arriba en el drop item. Y vamos a hacer lo mismo. El controlador del jugador, el artículo, la cantidad de artículo y la ubicación también. Y ahora podemos usar esta dentro de la interfaz de usuario principal. Entonces usemos esto. Entonces, lo que va a pasar es que vamos a llamar a través de la interfaz de usuario principal. Y va a pasar por aquí, pasando por el servidor solo para asegurarse de que no esté declinando ejecutarlo. Y va a correr por el modo de juego. Se va a solicitar que se suelte el artículo aquí en el Modo de Juego. Y entonces cuando eso sea posible, va a dejar caer el ítem, el controlador del jugador, donde se une el ítem así como la cantidad. Entonces vamos a la interfaz de usuario principal aquí. Entonces dentro de aquí desde el peón jugador, tomemos el inventario, porque ahora queremos llamar aquí a este evento. Entrarás aquí tomando la variable de inventario AAC aquí abajo en la parte inferior. Ahora podemos decir soltar artículo y seleccionarlo aquí. Ahora necesitamos un plugin para el controlador, así que podemos simplemente arrastrar desde el play on y guardar el controlador del reproductor. Ya hemos hecho una variable dentro de aquí, enchúfala aquí, y ahora necesitamos la clase de ítem. Entonces, ¿cómo conseguimos este? Al igual que antes, voy a la ranura de inventario y voy a copiar todo esto aquí. Entonces copiando todo esto y copiando esto también. Voy a volver a la interfaz de usuario principal, pegándola aquí. Voy a eliminar este índice de babosas, así que solo tengo esto aquí. Y para el inventario, solo podemos conectarlo. Tomemos el Peón Jugador solo para hacerlo más limpio. En lugar de conectar esto aquí, tomemos de nuevo aquí el peón del jugador llamado la variable de inventario AAC , y luego conectándolo a todo esto. Y ahora para el índice, necesitamos saber qué estamos arrastrando. Porque ahora cuando estamos arrastrando un ítem, realmente necesitamos saber de qué es este índice de slot del que estamos arrastrando. Entonces voy a volver a la interfaz de usuario y voy a abrir el inventario y voy a la gráfica. Y aquí voy a agregar una nueva variable, esta variable voy a llamar índice de ranura arrastrada, y voy a ponerla en un entero. Y vamos a compilar. Ahora, volvamos a las ranuras de inventario. Así que aquí en la ranura de inventario, cuando estamos arrastrando de eso, vamos a establecer el índice de ranura de drogas aquí. Entonces voy a empujar esto un poco aquí. Tomemos el controlador del jugador, llamemos a la variable de inventario WB. Y a partir de aquí hicimos el índice de slot Dragged. Voy a poner eso aquí y simplemente arrastrarlo hasta aquí, configurarlo. ¿Y a qué vamos a fijarlo? Simplemente vamos a establecerlo este índice de ranura aquí porque este es el índice de ranura que estamos arrastrando. Si compilo ahora y vuelvo a la interfaz de usuario principal, puedo tomar el controlador del reproductor. Entonces va a tomar el peón jugador, va a tomar el controlador del jugador. Y a partir de aquí podemos tomar la variable de inventario de WB. Y ahora podemos llamar al índice de ranura de arrastre. Podemos conectarlo al aquí arriba para obtener la información del artículo. Entonces ahora podemos tomar esto y decir descanso. Voy a tomar todo esto y simplemente empujarlo hacia atrás aquí. Entonces, para la clase de artículo, lo tenemos dentro de este artículo. Entonces si lo tomas y dices break y lo abres aquí, tenemos esta clase de ítem. Podemos enchufarlo en el artículo en cuanto a la cantidad que lo tenemos aquí. Así que vamos a enchufarlo y pregunta por la ubicación. Vamos a ponerlo donde esté el jugador actualmente. Así que tomando el refrán de Jugador Peón obtiene la ubicación del actor. Tomando esto aquí y puedes enchufarlo a la ubicación, haciendo clic en éste, presionando ocultar bolígrafos desconectados así como éste ocultar cosas desconectadas. Bien, así que ahora en realidad estamos dejando caer el artículo. No obstante, también necesitamos actualizar el Inventario. Así que voy a tomar este de aquí y decir set array elements. Y vamos a conectarlo aquí, o el artículo que necesitamos para eliminar el artículo del inventario. Entonces digamos aquí y digamos make. Y vamos a hacer ese espacio de inventario. Entonces, para el artículo, no vamos a agregar nada que elimine el artículo del inventario así como la cantidad que no vamos a agregar nada. Sin embargo, todavía necesitamos mantener nuestro espacio de inventario y nuestro índice de tragamonedas para que no se eliminen. Entonces, haciendo clic aquí en el espacio de inventario, mostremos nuestro inventario, ranura de inventario e índice también. Vamos a arrastrarlos hasta aquí. Y lo único que vamos a eliminar el artículo además de establecer la cantidad a cero. Ahora da clic aquí, ocultando pines desconectados. Y ahora para el índice podemos simplemente arrastrar desde este índice de slot arrastrado. Sólo podemos copiarlo si quieres. Y puede pegarlo aquí arriba solo para hacerlo más limpio y puedes enchufarlo aquí. Ahora también necesitamos actualizar la interfaz de usuario también. Recuerda hacerlo también. Entonces, directamente desde el espacio de inventario, diciendo actualizar inventario, hay lógica que lo conecta para el artículo. No vamos a enchufar nada que elimine el artículo del inventario además de establecer la cantidad a cero. Ahora recuerda hacer esto ahora tenemos actualizado todo lo que necesitamos actualizar, y vamos a conectarlo aquí ahora. Y recuerda hacer click en el boleto booleano aquí. Entonces es cierto y vamos a compilar y probemos ahora el juego. Así que guarda todo, haz clic en Reproducir. Ahora sigamos adelante y perdamos algo. Y vamos a hacer clic y arrastrarlo al mundo. Y se puede ver que está desove, increíble. Y voy a arrastrar éste también. Es desove. Y si solo hago clic en el plátano, lo tomo, lo arrastro y suelte, lo. Gotas aquí. Si hago clic en él, aludido de nuevo, carga la cantidad correcta. Si hago clic aquí, se me cae este es diez. Este es para, me encantó este. En realidad debería mirar primero a éste. Dice cuatro. Voy a cargar este va a sumar seis aquí y luego decir cuatro aquí. Entonces en realidad está funcionando como se supone que debe hacer ahora que estamos soltando artículos del inventario, vamos a agregar algo de física, así que se ve bien cuando los estamos dejando caer y no están flotando en el mundo. 44. 7.03 Habilitar la física de armas: Para habilitar la física de los elementos, sigamos adelante y hagamos clic en los Ítems y los planos. Vamos a abrir la base de artículos. Y dentro de aquí, si haces clic en la clase, los valores predeterminados están en realidad en la malla y el ítem aquí, puedes ver aquí en el panel Detalles tenemos algo llamado Física. Y aquí puedes hacer click en simular física para que pueda caer en el suelo. No obstante, en este se puede ver no podemos darle click. Entonces lo que podemos hacer es que podemos hacer clic aquí. Y al principio como eventos, podemos arrastrar este ítem desde aquí y decir simular física. Así que establece simular la física y vamos a establecerla en true. Entonces, cada vez que un arma genere o un objeto genere, va a establecer que la física sea cierta. Ahora vamos a hacer clic en Reproducir y ver qué pasa. Y ahora mismo si hago clic aquí y lo dejo caer, se puede ver que sigue flotando y tiene algo que ver con la colisión. Entonces haciendo clic en el ítem. Y si bajamos aquí a la colisión, se puede ver que está configurado en ninguna colisión. Y en lugar de no colisionar, da clic en Personalizado. Y aquí, la religión habilitada, hagamos clic en ella y digamos que la religión habilitada. Entonces es consulta y física, necesitamos la física aquí. Por lo que la colisión está habilitada. Y vamos a ignorar todo excepto la dinámica mundial y la estática mundial. Y este es el suelo para que no caiga por el suelo. Vamos a compilar ahora y vamos a hacer clic en play. Y déjame simplemente perder algo. Y si hago clic y caigo, se puede ver que cae, pero es falso a través del suelo. Y si esto te pasa, hecho descubrí por qué estaba pasando eso cuando intenté lograrlo. Y eso es porque la colisión es realmente mala para estos artículos que descargué. Entonces, si solo abres uno de los activos, por ejemplo artículo que inteligente, arreglemos este. Entonces este artículo inteligente, si haces clic en mostrar, tal vez esto también le pase a tu proyecto. Entonces, mostrando aquí las simples colisiones, esta es una simple colisión. Y lo que tienes que hacer es aquí en las colisiones necesitas agregar una caja de colisión simplificada. Se puede ver este sencillo bichos que se le agregaron. Si haces clic en él. Ahora voy a presionar R para la herramienta de escala. Y voy a escalarlo. Voy a reducir mi escalado a éste en su lugar. Redujamos un poco la velocidad de la cámara. Voy a escalarlo un poco. Entonces podemos ver que aquí tiene un poco de colisión. Esta es la caja de colisiones que escalamos hacia arriba y hacia abajo. Yo sólo voy a escalar algo así y a los lados así también. Voy a probarlo aquí para el cuchillo. Sigamos adelante y hagamos clic en cuadro de colisión simplificado. Ahora puedes hacer click en él y aumentarlo de esta manera. Y también arriba palabras así. Yo también lo hago. Déjame hacerlo también por el plátano. Déjame ir a colisión y luego caja simplificada. Y voy a escalarlo. Y la razón es esta, la colisión es realmente mala, así que está cayendo por el suelo así. Así que ahora vamos a guardar todo y vamos a probarlo con los artículos que ya tenemos. Ahora, puedes ver que está flotando un poco, y eso son solo los artículos. Son realmente mala colisión. Así que vamos a recogerlo, vamos a bajarlo. Y ya se puede ver que no está cayendo por el suelo. Para que puedas arreglar la colisión en tu artículo, hazlos más específicos ahora mismo. Estos se hacen muy rápidamente. Entonces voy a agregar la colisión también para mis pociones. Pero ahora se puede ver que no están cayendo por el suelo y todo está funcionando a la perfección. 45. 8.01 Obtención de información de las ranuras: Bien, entonces ahora es el momento de mover los artículos entre las ranuras de inventario. Entonces cuando perdemos un artículo aquí y la cantidad se fija en dos, por eso estoy aludiendo a. Pero la puedes ver no puedo moverlas entre las diferentes ranuras de inventario porque no lo hemos hecho. Podemos simplemente arrastrarlos y soltarlos al mundo y volver a cargarlos. No obstante, no podemos arrastrarlos a nuevos espacios de inventario, y esto es en lo que vamos a estar trabajando. adelante y vayamos a la interfaz de usuario y presionemos en la ranura de inventario. Y dentro de la gráfica, sigamos adelante y hagamos dos funciones. Entonces aquí arriba en las funciones, vamos a hacer clic en el más y llamemos al primero, se arrastra slots. Y agreguemos otro llamado consigue nuevos slots, slot y consigue los nuevos slots. Por lo que queremos obtener alguna información sobre estos dos slots porque los estaremos actualizando. Vamos a entrar en el primero, que nos arrastren ranura. Y dentro de aquí, tomemos el controlador del jugador o el jugador y el inventario AAC, variable de inventario. Entonces ahora queremos obtener las tres categorías, buscando categoría. Primero, conseguir la categoría de armas, obtener la categoría de comida, y conseguir la última, la categoría de pociones. Y además consigue que este obtenga la categoría de inventario seleccionada. Y al igual que antes, seleccionemos el negativo aquí y conectemos todas nuestras categorías, inventarios. Y lo hemos estado haciendo muchas veces ahora. Entonces ahora solo queremos obtener alguna información sobre el slot Dragged. Entonces dependiendo de qué inventario hayamos seleccionado, queremos obtener ese artículo. Y ahora, ¿qué artículo es? Es de la ranura de la droga. Y recuerde que ya hicimos en el índice de tragamonedas de inventario arrastrado, y está dentro del controlador del jugador. Entonces lo que podemos hacer es aquí, el peón jugador y el controlador del jugador, en realidad volvamos de no detectado y los hicimos dentro de aquí. De hecho voy a cortarlos de aquí y ponerlos en el evento de juego inicial en su lugar, simplemente arrastre al jugador así y conéctelo aquí. Bien, entonces eso está conectado. Y volvamos al Gráfico de Eventos y hagamos que empiece a jugar. Y aquí vamos a añadir esos dos aquí para que se definan cada vez que comencemos a jugar el juego. Bien, volvamos a las ranuras que se arrastran. Y dentro de aquí, tomemos el controlador del jugador, digamos inventario de WB, así que la variable de widget de inventario. Y aquí tenemos este llamado índice de slot arrastrado. Y vamos a enchufarlo aquí. Entonces ahora estamos obteniendo el índice de tragamonedas Dragged. Y a partir de esa ahora podemos decir break. Y esta información, vamos a agregarla a un nodo de retorno. Así que arrastrando desde aquí diciendo retorno, agregando un nodo de retorno. Y vamos a arrastrar todas las variables dentro del nodo devuelto para que podamos usarlas posteriormente. Ya que apenas estamos obteniendo alguna información, podemos dar click en esta función y dar click en pure. Entonces esto lo está convirtiendo en esa función verde, que es simplemente obtener información. Para que puedas ver el Gráfico de Eventos. Si arrastro esto aquí al mundo, es solo esta función Get verde la que no tiene pines de ejecución porque la configuramos en pure. Bien, así que ahora vamos a hacer que este obtenga un nuevo índice de slot. Entonces en el ser arrastrado, solo estoy copiando todo esto. Voy a conseguir un nuevo índice de slot. Estoy pegando todo el asunto aquí. Y ahora podemos volver a arrastrar desde aquí, hacer un nodo de retorno. Y vamos a conectarnos, igual que antes, conectemos todas las variables aquí. Y en lugar de hacer el índice de slot get dragged, solo tomemos este índice de slot. Este es el nuevo slot, el índice de slot. Así que vamos a compilar todo y ahorrar. Y eso fue todo para el índice de slot se arrastra y consigue nuevo índice ****. Y los estaremos usando para actualizar el inventario. 46. 8.02 Actualizar la información de las ranuras: Bien, entonces ahora hicimos el slot get dragged y obtuvimos nuevas funciones de slot. Ahora mismo vamos a hacer la actualización una vez más, ve aquí y crea nueva función. Llamemos a las primeras actualizaciones, arrastramos slugs y hagamos una nueva llamada update new slots. Vamos a entrar en la ranura de actualización arrastrada. Y nuevamente, solo necesitamos la información de la ranura Arrastrada. Así que voy a volver aquí y se les arrastran ranura. Voy a copiar todo esto y voy a volver a la ranura de arrastre de actualización y pegarlas dentro de aquí, y para actualizar la ranura otra vez igual que antes, arrastre desde aquí establece elementos de matriz. Y ahora vamos a conectarlo aquí. Entonces ahora queremos actualizar el índice de ranura Arrastrado y para el artículo, Vamos a arrastrarlo aquí y digamos make inventory slot. Y por aquí, vamos a hacer nuevas variables. Vamos a crear dos aquí. Pero el primero se va a llamar artículo de ranura arrastrado, y el segundo se llama nueva cantidad de artículo. Cambiemos este a un entero y el primero a una estructura de información de elemento. Entonces este es el artículo, ese artículo de medicamento simplemente va a entrar en este artículo aquí para esta matriz así como la cantidad. Arrastremos eso y lo usaremos más adelante. Pero déjame arrastrar todo hacia abajo. En cuanto a la ranura de inventario anterior y el índice de ranuras, no queremos cambiarlos. Se quedan igual. Entonces vamos a tomarlo aquí desde el índice de slot directo. Sólo vamos a enchufarlos de nuevo porque no queremos cambiarlos. Lo único que queremos cambiar en la ranura del medicamento, es el artículo y la cantidad que viene de este insumo. Y en cuanto al índice de ranura aquí para la matriz, podemos simplemente arrastrar este índice de ranura y conectarlo. Y ahora estamos actualizando el inventario. Pero recuerda que también necesitas actualizar la interfaz de usuario. Así que voy a arrastrar desde esta ranura de inventario y decir actualización, actualización de interfaz de usuario de ranura de inventario. Y vamos a enchufarlo . En cuanto al artículo, vamos a enchufar este artículo y otra vez, así como la cantidad para ello. Entonces voy a crear algunas notas. Puedes dar click en éste y hacer clic en Ocultar pines desconectados, ¿verdad? Entonces agregué algunas notas de reencaminamiento y lo organicé. Entonces ahora lo que estamos haciendo es simplemente obtener el índice de lote drags u obtener el ítem. Y aquí solo necesitamos el slot de inventario y el índice de slot y conectarlos de nuevo al nuevo porque no queremos perder esa información. Lo único que estamos cambiando es el artículo así como la cantidad para el índice de ranura Arrastrado o artículo que cuando lo estamos arrastrando en el inventario y recordamos actualizar la interfaz de usuario también. Al final, aunque, para la actualización nueva ranura, en realidad voy a eliminar esto y vamos a hacer clic aquí y hacer clic en duplicar. Y vamos a llamarlo actualizar mu ranuras. Y lo único que en realidad vamos a cambiar dentro de aquí. Vamos a eliminar este medicamento como índice, y vamos a usar este nuevo índice de ranura en su lugar. Déjame empujar un poco el código y organizarlo. Y eso es en realidad Es todo, todo lo demás permanece igual. Este sigue siendo el artículo de la ranura de drogas que verás más adelante, y todo es igual. Lo único que estamos haciendo aquí es obtener este nuevo índice de tragamonedas y estamos guardando la información sobre el widget de lotes de inventarios y el índice de tragamonedas también. Ahora, compilemos y guardemos todo. Entonces ahora tenemos estos. Si vuelvo al Gráfico de Eventos, tenemos éste. Indexe la ranura de las unidades, obtenga un nuevo índice de ranura. En realidad este, nuevamente haga clic en puro. Entonces lo tenemos así. Y luego tenemos la ranura de arrastre de actualización y actualizamos la nueva ranura. Entonces ahora los tenemos y podemos utilizarlos para actualizar el inventario. 47. 8.03 Artículo de caída en la ranura de inventario: Bien, así que ahora estamos listos para dejar caer el artículo en las ranuras de inventario nuevas y antiguas. Así que volvamos a la ranura de inventario. Vamos a la gráfica. Y aquí, al igual que antes de hacer clic en la anulación, baje y seleccione esta llamada al soltar. Así que ahora solo vamos a imprimir una cadena y ver qué pasa. Ver si el código se ejecuta. Entonces debería decir Hola si arrastre, así que si hago clic en play y arrastre de aquí a aquí, ahora mismo, no pasa nada porque no hay artículos. Entonces si arrastro aquí y lo dejo caer aquí, puedes ver que dice Hola. Pero para las ranuras de inventario donde no tengo artículos, no dice nada, así que eso es bueno. Pero si arrastro aquí, lo suelte, dice Hola, así que todo está funcionando como se supone que debe hacerlo. Entonces ahora vamos a hacer una nueva variable aquí, y es una booleana, y voy a llamarla es apilable. Entonces ahora lo que queremos hacer es verificar por nosotros una cosa y establecer esta si el artículo es apilable o si el artículo no es apilable. Vamos a pasar por aquí y conseguir el nuevo slot y también conseguir el slot directo. Primero, lo que queremos verificar es si estamos arrastrando el mismo artículo uno encima del otro. Entonces tomando este ítem diciendo break, así como este ítem diciendo break para el nuevo ítem al que estamos arrastrando. ¿Este nombre está en la ranura del nuevo artículo, es el mismo que el artículo que estamos arrastrando desde la ranura del controlador? Si lo es, eso significa que es el mismo artículo. Y también tenemos que comprobar si ese artículo es apilable. Si haces clic derecho y derecha y B, ves éste y el booleano. Entonces primero aquí, el primer elemento, Vamos a arrastrar esto es apilable y enchufarlo aquí, como aquí, y saludar a los pines no conectados. Entonces, ¿este artículo es apilable? ¿Y el nombre es el mismo que el de arrastre? Esto significa que en realidad es el mismo artículo. Y también solo para asegurarme voy a click en este plus aquí y agregar otro. Y justo aquí abajo, asegurándose también de que la ranura de elementos de arrastre también sea apilable, ocultando pines no conectados aquí. Entonces ahora lo que estamos diciendo aquí, estamos comprobando si el nombre es el mismo en la nueva ranura y en la ranura. Así que estamos comprobando si es el mismo artículo y también estamos comprobando si ese artículo es apilable. Y si lo es, vamos a hacer una sucursal. Y vamos a conectarlo y decir que sí, es apilable. Ahora hay otra cosa que tenemos que verificar. ¿Y si arrastramos este artículo de la ranura para medicamentos a la nueva ranura? Y la nueva ranura está vacía. Pero la trama sigue siendo apilable. En este momento estamos comprobando si tiene el mismo nombre, no va a tener el mismo nombre. Si esta ranura aquí está vacía y no tiene un artículo, también tenemos que verificar eso. Entonces, lo que vamos a hacer, vamos a tomar esta cantidad de artículo de la nueva ranura a la que estamos arrastrando, y estamos diciendo igual. Entonces, si esto es igual a cero, lo que significa que no hay elementos dentro de esa ranura. Sin embargo, este artículo de ranura para medicamentos es apilable. Entonces rompiendo de aquí y diciendo y booleano, si es cero y las drogas, ese artículo es apilable, entonces en realidad también es apilable. Éste puede ser cierto y éste puede ser cierto. Entonces para hacer esto, podemos arrastrar desde aquí y decir O booleano y luego conectar este de aquí arriba, y luego conectar este de aquí. Entonces ahora estamos diciendo si esto es cierto o si esto es cierto, entonces podemos seguir adelante y decir que el ítem es apilable. Y aquí en el falso, sólo vamos a ponerlo a ninguno apilable y vamos a usar esto un poco más tarde. Y luego vamos a crear una nueva función que usaremos en la siguiente lección. Así que no te preocupes por eso ahora mismo. Pero llamémoslo actualizar las ranuras de inventario. Y volvamos al Gráfico de Eventos, en realidad a la DNUDRIP aquí. Y vamos a arrastrar este, actualizar las ranuras de inventario. Vamos a conectarlo con los dos aquí. Y recuerda aquí cuando arrastras, así que en drag detectado que hicimos antes, dijimos que la interfaz de usuario principal sea visible, el lienzo principal, necesitamos recordar configurarlo de nuevo a none hit comprobable también. Ellos van a seguir adelante y copiar este código, volver a la Andhra, y vamos a pegarlo aquí abajo. Y menos conectados también conectan este y configuran este para que sea cierto. Ahora también hay que recordar cambiar este a festival no oculto. Y también tenemos que volver a la interfaz de usuario principal, esta de aquí, e ir a la gráfica, ir a la DNUDRIP. Y también aquí cuando lo dejamos caer encima del menú I, tenemos que volver a ponerlo en no comprobable. Debido a que este de aquí y el espacio de inventario, este solo funciona si lo dejamos caer encima de otro espacio de inventario. Este año, también lo estamos volviendo a cambiar cada vez que terminemos de dejar caer el artículo encima del lienzo. Entonces en lugar de este control de placa Ellis eliminó. Tomemos el Peón del Jugador, llevemos el controlador del jugador de esta jugada en adelante. Y ahora podemos conectarlo aquí arriba y simplemente empujar el código así, conectarlos, y recuerda tomar esto y configurarlo a ninguno odio comprobable. Entonces ahora estamos cambiando y volviendo a cambiarlo también. Bien, así que ahora terminamos con la función unwrap. Simplemente estamos comprobando si el artículo que estamos arrastrando es apilable o no. Y esto es algo que usaremos en la siguiente lección cuando hagamos esta función aquí. Así que vamos a guardar todo y pasemos a la siguiente lección. 48. 8.04 Actualización de las ranuras de inventario: Hola y bienvenidos de nuevo. Entonces ahora hagamos que esta actualice las ranuras de inventario. Así que por aquí para empezar, déjame arrastrar las nuevas babosas y que me arrastren ranura aquí. Primero, estamos comprobando si no estamos arrastrando el artículo en el mismo lugar. Entonces, si hago clic en Reproducir y acabo de sacar, toma un artículo aquí. Si lo arrastro, solo quiero ejecutar el código. Si lo estoy arrastrando hasta esta ranura de inventario, no quiero ejecutar el código si lo estoy arrastrando y luego soltando en el mismo espacio de inventario. Entonces primero estamos comprobando si el nuevo índice de diapositivas de ranuras de inventario es igual al anterior, lo que significa que simplemente lo dejamos caer en la misma ranura de inventario. Si eso es cierto, en realidad no queremos hacer nada, sólo por mi propia lectura. Voy a probarlo a partir de esto y decir que no y elegir este NO booleano. Entonces, si no es el mismo índice de slot, entonces seguiremos adelante y ejecutaremos el código. No obstante, si es falso, si es el mismo índice de slot, no queremos hacer nada. Entonces después, entonces vamos a preguntar si el artículo es apilable o no. Porque si es apilable, vamos a sumar juntos. Si no son apilables, sólo vamos a cambiarlos entre sí. Entonces primero bajemos aquí. Digamos que el artículo no es apilable. ¿Qué pasa? Tomemos este, actualicemos, arrastremos ranuras y actualicemos el nuevo boletín y la diapositiva de drogas. Y vamos a conectarlos aquí y conectarlos así. Entonces, para la nueva ranura, recuerda que estamos tomando el artículo de la ranura del conductor y lo estamos dejando caer encima de la nueva ranura. Entonces el nuevo elemento de ranura es el elemento arrastrado aquí desde la ranura directa. Entonces tomemos el slot get dragged. Tomemos el artículo aquí y lo dejemos caer, así como la cantidad del artículo. En cuanto a la ranura directa, necesitamos poner el artículo de la nueva ranura, el lodo seco. Entonces estamos cambiando entre estos dos. Vamos a tomar el artículo de la ranura para medicamentos y ponerlo en el nuevo espacio. Y luego necesitamos el nuevo artículo de slot y lo ponemos en la ranura de borradores. Ahora, acabamos de actualizar el nuevo ítem de slot. Por lo que es imposible obtener esta información. Ahora no podemos simplemente tomar esto y hacer así, porque aquí acabamos de actualizar este ítem. Este artículo aquí es en realidad ahora este artículo aquí. Entonces no podemos hacerlo así. Lo que podemos hacer es que solo podemos tomar este get new slot. Y antes de hacer esto aquí, vamos a hacer clic con el botón derecho remoto a una variable local. Una variable local es solo una variable temporal. Llama a este, nuevo artículo de ranura. Y podemos hacer clic derecho en esta, promover a variable local y llamar esta nueva cantidad de artículo de ranura. Ahora vamos a conectarlos entre sí y conectados juntos con éste también. Y ahora puedes usar esas variables para agregarlas aquí. Entonces, el nuevo artículo de ranura y luego la nueva cantidad de artículo de ranura. Bien, entonces ahora eso es correcto. En realidad puedes simplemente jugar el juego y ver si eso funciona. Entonces esto es si el artículo no es apilable. Así que vamos a hacer clic en play. Y voy a laúd esto de aquí, esto de aquí. Y si acabo de cambiar estos dos juntos, ya pueden ver que son conmutables. Si los arrastro hasta aquí, eso también funciona. Bien, así que aquí todo funciona y también puedo cambiarlos juntos. Eso es lindo. Se lo puedo dejar caer. Puedo cambiar esos y dejar esto también. Se puede ver que funciona perfectamente. Ahora. Sin embargo, no funciona con los artículos apilables porque no hemos hecho este código. Por lo que puedes ver aquí el artículo es apilable. No pasa nada porque aquí no hemos hecho nada. Entonces esto está funcionando ahora, vamos a subir aquí. Entonces, antes de hacer algo por los artículos apilables, queremos sumar las cantidades juntas. Porque te puedes imaginar si tienes cuatro plátanos en la primera ranura y tienes cinco plátanos en la segunda ranura, necesitamos agregar cuatro más cinco porque estamos arrastrando el artículo apilable al siguiente. Así que vamos a tomar la ranura de la droga y también la nueva ranura de aquí arriba. Ahora tengo esos y tomemos la cantidad de la nueva ranura. Vamos a agregarlo junto con la ranura directa. Y ahora acabamos de hacer esta nueva cantidad de artículo de ranura. Así que déjame arrastrarlo por aquí y configurarlo aquí, conectado aquí arriba. Y lo siguiente que tenemos que verificar es esta nueva cantidad de artículo. ¿Es mayor que el tamaño máximo de pila para este artículo en la nueva ranura? Así que vamos a romper aquí y comprobar si esto es mayor que el tamaño máximo de la pila porque no queremos agregar todo si se pone mayor que el tamaño máximo de pila, vamos a arrastrar aquí y hacer un booleano. Entonces digamos primero, No, no es mayor que el tamaño máximo de pila. Así que sólo vamos a agregar por ejemplo para plátanos junto con cinco plátanos. Entonces esto es falso. No es mayor que el tamaño máximo de la pila. Arrastremos la ranura de actualización del nuevo elemento, y arrastremos la actualización, ranura arrastrada y las conectemos juntas. Entonces, para el nuevo slot, nuevamente, al igual que antes, el nuevo ítem de slot es solo el del slot directo porque simplemente lo arrastramos por allí. Entonces tomando esto, enchufándolo y preguntando por la nueva cantidad de artículo, los acabamos de sumar aquí. Así que puedes. Toma esto y conéctalo y crea nodos de reencaminamiento. Y ahora podemos para el falso conectado aquí, realidad, en lugar de hacer esto, en realidad podemos simplemente usar este. Eliminemos esto y solo tomemos esta de aquí para que podamos usar esta variable acabamos de hacer Eso es un poco más limpio usar algo como esto. Y ahora para la ranura directa de actualización, ahora acabamos de agregar el elemento de ranura directa en la parte superior de la nueva ranura. Así que arrastra mucho más, en realidad ya no tenemos un artículo. Sólo vamos a dejar que sea así, la cantidad cero y el artículo se eliminará de la ranura anterior. Bien, entonces, ¿y si el artículo que estamos poniendo encima de la nueva ranura obtiene más que el tamaño Max Stack para ese artículo Ahora copiemos esto de nuevo y peguémoslo aquí arriba. Entonces, para el boletín nuevamente, es como el artículo es solo el artículo de la ranura de medicamentos y la cantidad para la nueva ranura es solo el tamaño Max Stack porque no puede ser mayor que eso. En cuanto a la ranura de drogas aquí, el elemento de lodos secos es solo este de nuevo. Entonces solo voy a copiar esto, pegarlo aquí. Ahora, para la nueva cantidad de artículo, necesitamos restar esta nueva cantidad del tamaño Max Stack. Entonces tomemos la cantidad aquí, digamos menos el tamaño máximo de la pila. Entonces digamos por ejemplo la ranura de droga era diez y la nueva ranura era cuatro, eso nos dará 14. No obstante, para los plátanos, el tamaño de Max Stack es de diez, así que va a decir 14 menos diez. Eso nos da cuatro. Recuerda que acabamos de arrastrar diez a la nueva ranura. Entonces tenemos los cuatro que quedan en el lodo seco. Así que aquí vamos a decir menos, y voy a crear algunas notas de reencaminamiento para que quede un poco más claro. Y conectemos esta verdad aquí arriba con esta, y ahora debería funcionar. Así que vamos a compilar todo. A ver si tenemos algún bicho. Vamos a hacer clic en Reproducir. Déjame seguir adelante y saquear algunos de los artículos. Y ahora tengo 10.4. Si les arrastro una nueva ranura, en realidad desaparece. Así que en realidad necesito ver qué está pasando. Déjame volver aquí y haciendo clic en la actualización de la nueva ranura y solo comprobando que esto es correcto y esto me parece bien. Entonces ahora si volvemos a la Andhra y volvemos a las diapositivas de actualización de inventario, la función IF aquí. Y puedo ver en realidad el error está aquí. Necesitamos el tamaño Max Stack de las ranuras drogadas. Porque no necesitamos el tamaño Max Stack de la nueva ranura. Porque si me arrastro aquí, ves la nueva diapositiva ahora mismo tiene ceros. Así que el tamaño Max Stack es cero porque no hay ningún artículo que sea realmente el dólar. Así que en vez de aquí, vamos a conectarlo, conectar éste en su lugar, y crear notas de reencaminamiento. Entonces se ve bien. Ahora vamos a compilar y debería funcionar. Esto fue solo un pequeño error. Volvamos a saquear todo. Y ahora tenemos el tamaño correcto de Max Stack. Así que vamos a arrastrarlo al siguiente, y ahora funciona. Y si arrastro este diez a los cuatro, debería decir 10.4. Entonces esto debería cambiar entre sí así así. Entonces funciona ahora los artículos apilables están funcionando. Y si lo dejo caer aquí, me cae éste, los cargo. Cfi, vamos, déjame dibujar realmente éste, recogeré esto, lo pondré por aquí, debería llenar esta ranura aquí primero. Entonces va a poner las cosas que son más aquí. Los pondrá en la primera ranura. Bien, entonces todo está funcionando ahora. Estamos actualizando todo. Voy a seguir adelante y colocar todos los artículos en el suelo y vamos a probar el producto final. 49. 8.05 Agrega efectos de sonido: Para que sea un poco más interesante antes de terminar este curso, sigamos adelante y agreguemos algunos efectos de sonido. Entonces en la carpeta de audio, he incluido algunos efectos de sonido. Por supuesto podemos agregar más, pero probemos esos por ahora. Entonces esos efectos de sonido, puedes hacer clic en el primero y mantener presionado Mayús clic en el último y hacer clic con el botón derecho. Sigues adelante y creas múltiples colas. Entonces estamos creando esas señales sonoras. Voy a cambiarles el nombre. Por ejemplo, yo. Se puede cambiar el nombre del primero. En lugar de llamar a una cola por aquí, voy a llamarlo el SC para señal de sonido, y luego el nombre del efecto de sonido. Ahora los he renombrado a todos, así que solo ve para empezar para obtener una señal de sonido. Y puedo tocarlos ahora, pero son muy ruidosos. Creo que se le permitirá. Entonces, antes de hacer esto, abriré el primero. Y ahora para esto aquí arriba, para el multiplicador de volumen, se puede reducir el sonido. Este es el fondo Hoover. Entonces déjame escribir 0.5 y jugar la cola. Y tal vez 0.4 es mejor. Vamos a cerrarlo. Vamos a abrir la siguiente pulsación de un botón, digamos 0.4. Creo que esto está bien. Ahora para el inventario de los, Probemos 0.4. Eso está bien. Nuevamente, yendo por el drop item, tal vez 0.5 para este, esto es muy silencioso y los luditas le 0.50, 0.4. Creo que es mejor. Bien. Y el último, el inventario abierto. Probemos 0.4 como muy fuerte. 0.3. Creo que el 0.25, tal vez, algo así. Vamos a guardar todo ahora que hemos reducido el sonido. Ahora como pequeño truco si quieres diferentes sonidos. Entonces ahora mismo se puede ver así es como suena. Pero si quieres que suene un poco diferente cada vez que abres, solo puedes arrastrar desde aquí y escribir modulador aquí abajo, este modulador y conectado aquí. Entonces ahora tienes un modulador en el medio. Y se puede decir el mínimo, que es 0.9, y el tono máximo es 1.1. Y si lo tocas cada vez que puedes escuchar, es un efecto de sonido diferente. Cada vez. Cambia ligeramente en el tono hacia arriba y hacia abajo. Entonces depende de usted, por ejemplo, los sonidos del laúd, el elemento de caída. Puedes hacerlos ligeramente diferentes cada vez que cargues. Entonces eso está bien por ahora. Así que vamos a agregar el botón hover y botón para empezar. Entonces vamos a la interfaz de usuario. Y primer año para la categoría. Vamos a darle un click sobre él. Y aquí, vamos a hacer clic en la categoría del botón. Puedes bajar aquí y tienes sonido deprimido y el sonido rondado. Ellos darán click por aquí, seleccionando el botón hover y presionar el botón para éste, vamos a compilar y guardar lo que podamos hacer. También podemos agregarlo a los botones de inventario. Por lo que haciendo clic en la interfaz de usuario principal, si hacemos clic en este botón, podemos agregar lo mismo aquí. Botón presione el botón, pase el cursor. Vamos a compilar y guardar todo. Puedes probarlo. Puedes intentar hacer clic en Reproducir y ver qué pasa aquí para el cliente. Si hago clic ocupado, ahora está funcionando. Entonces es un poco más interesante que ningún sonido en absoluto. Bueno, vamos a cerrarlo y lo siguiente que tenemos que agregar es el inventario cerrado y abrir inventario que vamos a los planos. Y probemos primero. Tenemos aquí y el jugador, estamos abriendo y cerrando el inventario. Entonces podemos ponerlo aquí, o podemos jugarlo dentro del controlador del reproductor. Si vamos al controlador del reproductor y eres libre de hacer lo que quieras aquí, entonces depende de ti. También podemos relacionarnos aquí cuando abres el widget, el inventario de apertura, o cuando cerramos el widget, cerramos el inventario. Entonces puede hacerlo aquí o allá. Déjame jugarlo aquí en el reproductor arrastre de aquí, diga sonido tardío a D, y también copiar y pegarlo aquí abajo. Entonces aquí estamos cerrando el inventario. Entonces haciendo clic aquí y seleccionando el inventario de mínimos. Y aquí abajo estamos abriendo el inventario. Entonces voy a seleccionar Abrir inventario y vamos a incluirlos aquí en el comentario también. Bien, vamos a compilar y hagamos clic en Reproducir y veamos qué pasa. Entonces si hago clic en él para abrir el inventario, y hago clic en Aceptar para cerrarlo de nuevo. Bien, ahora eso también funciona. Lo último que aquí en el audio nos falta es el elemento drop y el elemento laúd. Para el artículo de cargas estamos presionando E para saquear el ISM y va a pasar por el servidor y agregarlo al inventario. Sin embargo, aún no hemos cargado aquí. Así que pasemos al inventario y vamos jugarlo aquí en el bucle, completo. Cuando destruimos el artículo, lo hemos cargado aquí. Arrastremos de aquí y digamos tocar sonido a D. Y lo que queremos tocar es como el aludido. Entonces es artículo lascivo. Y vamos a copiar y pegarlo aquí arriba. También estamos cargando aquí arriba. Bien, entonces el sonido final que nos falta aquí es el drop item. Entonces, para el drop item, si recuerdas, vayamos a la UI y vayamos a WB main. Dentro de aquí tenemos esta función Andhra o dejando caer el artículo. Y tenemos este artículo de una sola gota del inventario y termina, si recuerdas, en el controlador del jugador, responderá igual cuando lo dejemos caer. Sin embargo, si lo juegas aquí, recuerda que este evento se está ejecutando a través del servidor. Por lo que nunca corre a través del cliente. Entonces, si agregas sonido lay a d aquí, no va a funcionar. El cliente no lo escuchará. Así que vamos a hacerlo en realidad dentro de WB main aquí. Cuando estemos listos para dejar caer el artículo, sigamos adelante y dejemos caer el artículo. Incluso puedes simplemente colocarlo aquí al actualizar la interfaz de usuario. Juguémoslo aquí antes de hacer esto final. Y recuerda seleccionar la señal de sonido de elemento de caída. Y vamos a compilar y hacer clic en play. Entonces ahora cuando andaba por ahí, aludía a un artículo. Abrir el inventario aludido. Bien, suena bien. Y cuando deje caer el artículo, se puede escuchar eso también. Así es como agregas efectos de sonido. Esto puede por supuesto, solo ser escuchado por usted mismo porque esto es un inventario después de todo. Y no queremos que todos estos sonidos sean escuchados por la otra capa también. Entonces ahora todo suena bien. Y sigamos adelante. 50. 8.06 Prueba el producto final: Bien, así que ahora estamos listos para probar el producto final y ver si tenemos alguna caja. Entonces si hacemos clic en jugar aquí y ahora es el servidor y le preguntamos al servidor, voy a aludir a un arma y la estoy cargando. Estoy cargando el siguiente. Esta es la navaja. Todo está funcionando. Puedo moverlos y si vuelvo a aludir, se cargará aquí arriba. Entonces, ¿eso está funcionando correctamente? Así como así, voy a perder una poción y voy a presionar aquí. Y se trata de tres pociones en el suelo cargando estas 13 pociones de resistencia cargan más pociones de resistencia. Este fue uno en el suelo. Mirando aquí, va a poner más pociones. Creo que el tamaño máximo de pila es diez para la poción es en realidad seis para los cocientes. Y ahora puedes ver que se agregan encima de una nueva pila. Y puedo mantener esto como cinco, creo, para las manipulaciones. Entonces va a hacer una nueva pila. Entonces todo está funcionando perfecto. Voy a cargar los plátanos. Estos funcionan como sabes, los hemos probado muchas veces así así. Perfecto. Entonces estos están funcionando. Voy a perder la carne. Y se puede ver la carne. Esta es, creo que seis piezas. Y en realidad no esta. Esta es de seis piezas, por lo que va a sumar 5.1. Y eso funciona. 5.1. Eso es correcto. Y ahora puedes ver que esto funciona perfectamente. Y si solo sigo contaminando armas, bien, así que todo está funcionando como se supone que debe hacerlo. Puedo moverlos por ahí. Si muevo piezas que no son apilables, no se apilarán. Entonces este cinco foráneo, puedo cambiarlos entre sí y puedo dejarlos caer si quiero. Ahora, como cliente, tenemos que saber que podemos hacer lo mismo. Entonces haciendo clic en Play, este es el servidor. Entonces volviendo al cliente, voy a minimizar esto un poco. Acudiendo al cliente, presionando en ojo para ver el inventario. Puedo mirar esto, esto funciona muy bien. Las carnes están aquí en la comida. Eso es genial. Voy a aludir a todas estas cosas y está funcionando perfectamente también. Ahora para el cliente, si me caigo, el servidor debería poder verlos. Y puedo ver esto, ese declive acaba de caer. Entonces esta es, si aludiera, son cinco pociones. Entonces, si lo dejo caer aquí, los artículos pueden, el cliente puede verlo, y el cliente puede cargar estos cinco océanos también. Se apilará aquí antes de que se apile por aquí. Bien, entonces lo último, vamos a probarlo entre dos clientes porque no queremos la lógica del servidor, así que también debería ser correcta. Si dos clientes están juntos, digamos en un servidor dedicado. Así que sigamos adelante como este primer cliente. Vamos a saquear y dejemos caer estos cinco plátanos. Yo también los puedo ver. Y el nuevo cliente aquí los va a perder. Y estos son en realidad cinco plátanos, Digamos que los dejé caer aquí en su lugar. Y los puedo ver en los otros clientes. Entonces todo está funcionando bien tanto para el cliente como para el servidor. Esto fue para el inventario. Espero que hayas disfrutado del curso. Fue muy divertido de hacer. Si te interesan mis otros cursos, por favor visita pixel helmet.com. Voy a seguir lanzando cursos todos los meses. Así que adelante y echa un vistazo si quieres alguna ayuda. También te puedo ayudar en mi página web o si quieres unirte a nuestro servidor de discordia, eso te agradecerá por estar aquí y te veré en la siguiente.