‫Hola y bienvenido.
‫En esta lección, generaremos nuestro rifle en tiempo de ejecución desde nuestra clase de caracteres en C++.
‫Vamos a sumergirnos y ver cómo se hace.
‫Bueno.
‫Así que queremos que nuestro arma se reproduzca.
‫Como hijo del personaje de Shoots, el primer punto de llamada es poder engendrar a ese actor desde dentro
‫de otro actor.
‫Vamos a hacer esto en tiempo de ejecución.
‫Vamos a comenzar a jugar porque esa es la forma en que puedes hacerlo cuando estás engendrando.
‫Los actores deben hacerlo en tiempo de ejecución.
‫Y la forma en que vamos a hacer esto es que vamos a apoderarnos del mundo primero.
‫Así que obtén mundo y luego llamaremos a una función en Obtener mundo, por cierto, mundo y nivel son sinónimos.
‫Entonces, lo que en realidad estamos haciendo aquí es subir al nivel y
‫decir, oye, nivel, ¿puedes crear como actor porque todos los actores esencialmente pertenecen o viven en un nivel?
‫Entonces estamos diciendo, ya sabes, engendrar actor para mí, por favor.
‫Y este es un actor de generación que toma una plantilla.
‫Entonces puedes decir, quiero que este actor que voy a engendrar sea un arma tipo A.
‫Y para que eso funcione, vamos a necesitar tener un hash incluido aquí para el arma.
‫h
‫Y luego vamos a tomar un argumento y el argumento para engendrar en realidad puede ser un tipo de clase.
‫Entonces, de manera predeterminada, seguirá adelante y generará el C ++.
‫Pero aquí queremos engendrar el modelo hijo de esta arma.
‫Así que tenemos que averiguar qué va a ser lo que debe conectarse en Blueprint.
‫No se puede conectar aquí en C++, al menos no fácilmente.
‫El mejor lugar para hacerlo es en Blueprint.
‫Así que vamos a hacer un ALLO para ir al archivo de encabezado de nuestro personaje tirador y vamos a
‫agregar una nueva propiedad aquí.
‫Para permitirnos configurar la clase a la que debemos apuntar para generar un acto.
‫¿Qué clase de plano deberíamos generar a partir de este personaje de disparos?
‫Lo vamos a tener como una edición predeterminada solo y editar valores predeterminados solo porque no queremos poder editar esto en tiempo de ejecución porque daría la falsa impresión de que
‫puede cambiar el tipo de arma que estamos usando en tiempo de ejecución, mientras que
‫las jugadas de selección ya se han llamado que las armas ya se han generado y, por
‫lo tanto, en realidad no actualizaría nada.
‫Por lo tanto, no queremos que sea editable para dar a las personas una impresión falsa de lo que se puede hacer.
‫Y luego aquí vamos a usar una macro llamada subclase T de la que puede o no haberse topado
‫antes.
‫Y la subclase T es una plantilla.
‫Así que usamos estos paréntesis angulares nuevamente y queremos que diga una subclase de arma.
‫Y básicamente lo que esto significa es que permite que los planos restrinjan las clases que podemos
‫seleccionar a solo las clases que son subclases de la clase Gun C++.
‫Ahora, esto no va a ser un puntero porque no estamos apuntando a una instancia real del arma.
‫Lo que estamos obteniendo aquí en esta variable es una clase en sí misma.
‫En este caso, es una clase modelo, pero sigue siendo una clase.
‫Entonces, lo que vamos a querer llamar a esto es la clase de armas, solo para dejar muy claro que esto no
‫es realmente el arma en sí.
‫Queremos otra propiedad suya aquí para almacenar el arma y eso no será un valor predeterminado de edición.
‫Básicamente, no queremos hacer de esto una propiedad visible en absoluto, pero estará en un puntero de
‫pistola.
‫¿Ver la diferencia?
‫Uno de ellos es una subclase t de pistola, el otro es un puntero de pistola y este es el arma real.
‫Una vez que hayamos creado una instancia de la clase, ahí es donde la almacenaremos.
‫Así que vayamos a nuestro tirador c p y terminemos este juego de inicio donde estamos generando cosas, por lo que vamos a tener un
‫arma igual para que el engendro mundial actúe como un arma y el argumento va a pasar aquí
‫es la clase de arma que vamos a establecer en los planos.
‫Así que vamos a intentar compilar esto.
‫Puede darnos algunos errores.
‫A ver, tengo el registro de mensajes abierto con el registro de compilación.
‫Y efectivamente, estamos recibiendo algunos errores aquí en el archivo principal que dice identificador no declarado
‫porque necesitamos reenviar la declaración del arma.
‫Así que voy a hacer esto en la parte superior.
‫Eso es en dos lugares que voy a decir clase.
‫Una pistola como la vista.
‫Y solo un recordatorio, declarar hacia adelante de esta manera significa que podemos mantener nuestros tiempos de compilación bajos al no
‫incluir demasiado en la cabeza pesada de los archivos.
‫Intentemos recompilar y ver.
‫Parece que ese fue el único error.
‫Ahora está compilado con éxito.
‫Sigamos adelante, presionemos reproducir y veamos qué sucede.
‫Salida.
‫Echa un vistazo a nuestro.
‫Básicamente, queremos echar un vistazo a la carga del mensaje, que no tengo abierto.
‫Así que vayamos a las herramientas de ventana y desarrollador y echemos un vistazo al registro de salida y veamos si tenemos algún error aquí.
‫Sí.
‫El actor de generación falló porque no se especificó ninguna clase.
‫Por supuesto.
‫No se especificó ninguna clase porque aún no la configuramos en blueprint.
‫Así que esto lo guardaré como un desafío para que conectes el arma, encuentres la propiedad en
‫nuestros planos de personajes, configures el arma correcta y pruebes que genera.
‫Pausa el video y pruébalo.
‫Bien, bienvenido de nuevo.
‫Así que vayamos a nuestro personaje tirador, BP, y encontremos la propiedad que debería estar en la ruta o
‫la clase.
‫Los valores predeterminados entran en detalles y disparan a un personaje.
‫Puede ver que aquí tenemos una rotación que hemos configurado y tenemos nuestra clase de pistola, que es un menú
‫desplegable que me permite elegir entre que la pistola sea la pistola C++.
‫Y aquí es donde una convención de nomenclatura resulta útil.
‫Las cosas prefijadas con el guión bajo BP son los planos.
‫Así que queremos un rifle de subrayado AB BP.
‫Continuaremos y seleccionaremos esa compilación guardada, iremos a la escena y presionaremos reproducir.
‫Ahora, con suerte, no tenemos ningún error acerca de generar un arma.
‫El arma debería haber aparecido.
‫Bueno.
‫Y para saber si es así, podemos presionar F8 y echar un vistazo al contorno del mundo.
‫Si hago que el contorno del mundo sea un poco más grande, puedo buscar el rifle de subrayado BP.
‫Viva.
‫Tenemos un rifle de subrayado BP en el momento en que está en medio de la nada y no es una identificación de niño correcta.
‫Ese será el tema de la próxima conferencia.
‫Así que te veré allí.