‫Hola y bienvenido.
‫En esta lección, vamos a aprender acerca de las funciones que viven no en los planos de nivel, sino
‫en una clase de plano en particular.
‫Estas se denominan funciones miembro y son absolutamente cruciales para la programación orientada a objetos.
‫Vamos a sumergirnos y ver cómo funcionan.
‫Entonces, en nuestra función de proyectil de generación en los planos de nivel, tenemos un montón de nodos aquí relacionados con agregar
‫el impulso, obtener la dirección del impulso y obtener el componente de malla estática.
‫Todos estos nodos utilizan la instancia del proyectil BP en profundidad.
‫¿No sería genial si pudiéramos tomar todo este código y moverlo al proyectil BP para que el código
‫que trata con esos datos viva con los datos mismos?
‫Bueno, ese es todo el punto de la programación orientada a objetos.
‫Entonces podemos definir la programación orientada a objetos como funciones que viven con los datos que manipulan.
‫Entonces, ¿cómo funciona esto?
‫¿Cómo podemos hacer funciones en instancias particulares de cosas?
‫Bueno, una forma en que podemos hacer esto, podemos ir a nuestra clase de proyectil BP y asegurarnos
‫de hacer clic en abrir el editor de planos completo. Puede ver que en este editor de planos completo hay un
‫panel de mi plano y una sección de funciones. entonces podemos presionar la flecha más aquí para crear una nueva función en la clase de proyectil
‫BP.
‫Y voy a nombrar esta función, imprime tu nombre y esto imprime tu nombre.
‫La función debería hacer precisamente eso.
‫Podemos ver que tenemos un nodo que inicia la ejecución en esta función para que podamos sacar su
‫pin de ejecución y escribir cadena de impresión.
‫Así que eso se va a imprimir.
‫Hola.
‫No es exactamente el nombre de esta función, ¿verdad?
‫Pero lo solucionaremos en un segundo.
‫Así que lo que tenemos aquí se conoce como función miembro.
‫Una función miembro es una función en una clase que siempre se llama en una instancia particular de una clase.
‫Entonces no dices, voy a llamar o imprimes tu nombre en todos los proyectiles de BP.
‫Tienes que decir, quiero llamar, escribe tu nombre en el proyectil BP número uno, o en el proyectil BP
‫que acaba de generarse.
‫Entonces, si vamos a nuestro plano de nivel, lo que tendría que hacer es tomar la referencia que salió del
‫proyectil BP de generación.
‫Y a partir de esa referencia, puede llamar a imprimir su nombre y puede ver que se conecta automáticamente
‫a una nota de entrada especial llamada Destino.
‫Y obviamente también tienes que conectar tus pines de ejecución.
‫Voy a conectarlo para que suceda después de agregar impulso.
‫Pero lo interesante de este nodo de entrada de objetivo especial es que si pasa al proyectil BP, verá
‫esa impresión.
‫Su nombre no tiene tal carga de entrada.
‫Entonces, ¿qué está pasando aquí?
‫Bueno, implícitamente, cualquier función miembro tiene un parámetro que es su objetivo actual o la instancia actual.
‫Y puede obtener esto haciendo clic con el botón derecho en el gráfico de eventos del modelo y escribiendo self.
‫Y puede ver que hay un nodo llamado obtener una referencia a sí mismo y simplemente crea un nodo propio como
‫este.
‫Y luego puede usar esta referencia de objeto propio para obtener cualquiera de las propiedades de este objeto en
‫particular.
‫Entonces, si quisiéramos obtener el nombre de nuestro proyectil BP, puede sacar la referencia propia y escribir
‫obtener nombre para mostrar, lo que hemos hecho antes.
‫Y luego puede conectar el nombre para mostrar en nuestra cadena de impresión.
‫Entonces, cuando jugamos y disparamos un nuevo proyectil, puede ver que está imprimiendo el nombre del proyectil y puede
‫ver si cada nuevo proyectil crea el nombre es diferente porque el yo al que
‫se refiere la función miembro es un yo diferente es un proyectil diferente.
‫Así que hemos aprendido que self es un nodo disponible dentro de una función miembro que siempre apunta
‫a la instancia actual específica que estamos usando.
‫Entonces, el objetivo principal de ver las funciones miembro en primer lugar, la razón por la que comenzamos
‫fue debido a estos nodos en los planos de nivel, la forma en que obtenemos la combinación estática, obtenemos el vector
‫directo y luego agregamos un impulso a estos.
‫Estos sienten que deberían vivir en el proyectil BP.
‫Y eso es lo que me gustaría desafiarte a hacer.
‫Este es un cargo un poco complicado, pero estamos llegando al final de la sección.
‫Así que te llevaré paso a paso.
‫Así que vamos a hacer una función de lanzamiento.
‫Shine on the BP project, también creado en los proyectos de BP.
‫Iré a esas partes positivas y agregaré una nueva.
‫Llámalo lanzamiento.
‫Luego corte y pegue los nodos de los planos de nivel en esta función suya recién creada y
‫asegúrese de conectar pines de ejecución, etc.
‫Ahora vas a intentar compilar.
‫No hemos hecho esto muy a menudo en blueprints, pero la compilación solo le permite revisar
‫la ortografía de su código y asegurarse de que no haya ningún error que el compilador de Blueprint pueda prever.
‫Entonces, la forma de hacer esto es ir al botón en la parte superior izquierda y presionar compilar, y si
‫hay algún error, aparecerá en la parte inferior del pequeño panel llamado resultados del compilador.
‫Puede ver que tengo una compilación exitosa, pero cualquier error aparecerá aquí y, a veces, obtendrá un
‫poco de rojo en un nodo para indicar dónde está el error.
‫Y me gustaría ver si puede tratar de entender lo que dice ese error y tratar de corregir
‫el error usando el nuevo nodo propio que hemos aprendido.
‫Y luego debe continuar y llamar a esa función desde los planos de nivel arrastrando fuera de la instancia como lo hicimos para
‫nuestro nodo de impresión usted mismo arrastrando fuera de la instancia del nuevo proyectil creado a partir del nodo de
‫generación y llamar a la función de lanzamiento.
‫Pausa el video y pruébalo.
‫Bueno.
‫Bienvenido de nuevo.
‫Así que iré a nuestro proyectil BP, presionaré el botón más junto a las funciones en el
‫panel de mi plano y escribiré para nombrar la función que vamos a volver a nuestro plano de nivel, cortar
‫los nodos y entrar en el Proyectil BP y pégalos.
‫Ahora tengo que conectar la ejecución desde el lanzamiento para agregar impulso y ahora voy a presionar, compilar
‫y verán, obtengo un error en el macerado estático o obtengo un nodo de maceración estático.
‫Y si observa los resultados del compilador, dice que usa un objetivo no válido.
‫Entonces, apuntar esta entrada aquí no es correcto.
‫Ahora, como le recomendé, puede hacer clic con el botón derecho y escribir self para obtener una referencia a sí
‫mismo y luego llevar ese yo al objetivo.
‫Ahora, si presiona compilar nuevamente, puede ver que el error desapareció y
‫se compila correctamente porque lo que está sucediendo es que ahora puede obtener los componentes estáticos del proyectil actual.
‫Esta función de lanzamiento está siendo llamada.
‫Entonces, si volvemos a nuestros planos de nivel ahora, podemos tomar el pin de salida de nuestro actor de generación y podemos escribir
‫lanzamiento para llamar a nuestra función de lanzamiento.
‫Puede ver que el pin de ejecución se conectó automáticamente para mí y luego, después de la función
‫de inicio, podemos conectar nuestra función de imprimir su nombre si queremos, aunque eso fue solo con
‫fines de depuración y demostración y si lo prueba, usted puede ver que todavía se está lanzando con éxito,
‫excepto que ahora el código que se ocupa del lanzamiento vive en el propio proyectil.
‫Buena cosa.
‫Hemos aprendido acerca de uno de los conceptos centrales de la programación orientada a objetos en esta lección sobre funciones miembro.
‫Te veré en la próxima.