‫Hola y bienvenido.
‫En esta lección, estableceremos el vínculo entre el motor y el gatillo usando una técnica llamada inyección de dependencia
‫para que al final de la lección, si metemos la gárgola, la puerta se mueva hacia abajo,
‫o al menos parcialmente lo hace.
‫Vamos a sumergirnos y ver cómo funciona esto.
‫Y tomo una taza.
‫Hemos visto que hay una dependencia, lo que llamamos una dependencia para el identificador de física.
‫Este capturador no puede hacer su trabajo a menos que tenga un componente de manejo de física en algún lugar ahora, da la casualidad de
‫que el componente de activación es el mismo.
‫El componente activador, para hacer su trabajo correctamente, necesita tener acceso a un componente motor.
‫Sin embargo, es un poco más complicado en este caso porque seguro, en el caso de nuestra puerta
‫secreta, el gatillo y el objeto en movimiento están dentro del mismo actor.
‫Por lo tanto, podría obtener un objeto encontrando el componente a de tipo en el actor.
‫Pero, ¿y si tuviéramos esta situación en mi guión en la que quiero que mi gatillo esté en una
‫parte diferente de la habitación del actor que se está moviendo bien para permitir ese tipo de flexibilidad?
‫Queremos que el disparador no tenga que buscar sus propias dependencias.
‫Y en realidad hay un nombre para este tipo de concepto de programa.
‫Se llama inyección de dependencia.
‫Básicamente, es en el caso de que tengamos algo que diga, necesito otro objeto, pero no puedo encontrarlo
‫yo mismo o no quiero encontrarlo yo mismo.
‫Y a menudo es sensato no dejarlo en manos del objeto que está haciendo su propio trabajo, haciendo que tenga otro trabajo
‫para tratar de apoderarse de un objeto.
‫Entonces, la forma en que podemos hacer esto es crear un mecanismo para los planos que le indiquen al componente desencadenante
‫dónde encontrar un motor.
‫Y la forma en que vamos a hacer esto es mediante la creación de una función invocable de blueprint en nuestro componente de activación.
‫Así que va a ser público.
‫Vamos a ponerlo en la sección pública debajo del componente de marca, y va
‫a ser una función U para que pueda estar entre paréntesis, blueprint invocable.
‫Y no es necesario que haya mucho para esta función.
‫Va a ser nulo porque no lo necesita para devolver algo, pero se establecerá en el motor,
‫por lo que establecerá un enlace al motor y para que establezca un enlace al motor, debe tomar
‫un puntero a un componente motor.
‫Así que esa va a ser la estrella del motor y podemos llamarlo el motor así y poner un punto y coma al final de
‫esa línea.
‫Y tenemos que almacenar esto en algún lugar.
‫Así que vamos a crear una nueva variable privada.
‫No va a ser una propiedad nueva y solo va a ser un puntero de movimiento
‫U, que también llamaremos un motor.
‫Así y lo que vamos a hacer es implementar este conjunto de movimiento en el CPP para que establezca este movimiento como un
‫puntero, que de forma predeterminada será nulo.
‫Y tenemos que hacer una cosa más.
‫Tenemos que incluir el archivo de encabezado para nuestro motor.
‫Ahora, en este caso, debido a que el archivo de encabezado está en la
‫misma carpeta que el componente activador, todo lo que tenemos que hacer es incluir el motor de comillas H y eso asegurará que el componente activador reconozca el
‫tipo de motor.
‫Así que vayamos a nuestro componente disparador.
‫CP Y voy a poner esto debajo de nuestro componente de marca que vamos a implementar para mover conjuntos.
‫Vamos a poner la clase que activas antes del componente y lo sangraremos.
‫Elimina el punto y coma y agrega llaves.
‫Y esencialmente todo lo que vamos a tener que hacer aquí, cambiemos el nombre solo en el archivo C++.
‫En realidad, no importa si el nombre de los parámetros coincide entre el encabezado y C++.
‫Entonces podemos cambiarlo aquí y decir que el nuevo motor es lo que viene para establecer el motor.
‫Y así podemos establecer nuestra variable local, nuestra variable de clase movedor igual al nuevo movedor.
‫Así que ahora es bastante importante que no omita este paso de cambio de nombre porque si el parámetro de
‫entrada tiene el mismo nombre que una de las variables en la clase, irreal por defecto establecerá que sea un error.
‫Se llama sombreado y Unreal no quiere que lo haga, por lo que debe asegurarse de tener el nombre de
‫su parámetro diferente al de la variable ahora porque estas nuevas funciones no siempre aparecen con los cambios
‫de codificación en vivo.
‫Cerraré la recompilación del editor desde el código de Visual Studio y luego lo reiniciaré desde el nuevo
‫proyecto.
‫Ahora vayamos al cajón de contenido, abramos nuestro plano de pared secreto y luego, desde
‫nuestro nodo Comenzar reproducción en el gráfico de eventos, salgamos de aquí y busquemos el motor del set.
‫Ahora observe que hay dos opciones aquí.
‫Uno, sería establecer el componente que también se llama mover, y uno es una función en el componente de
‫activación.
‫Así que queremos seleccionar el que es una función en el componente de disparo.
‫Y luego lo que queremos hacer es arrastrar nuestro componente motor como los otros argumentos a esta función y eso
‫debería funcionar.
‫Se establece el motor al comienzo del juego.
‫Así que ahora, esencialmente, lo que queremos que suceda es que nuestro componente desencadenante debería estar
‫configurando y configurando el booleano debería moverse aquí.
‫Ese va a ser mi desafío para que usted cree algunas funciones públicas en mover y mover.
‫CP Debe establecerse, debe moverse y debe actualizar su variable de propiedad.
‫De hecho, puede hacer que ya no sea una propiedad nueva porque vamos a configurarlo a través del código
‫ahora y luego puede ponerlo en la sección pública.
‫Debe ser público porque vamos a intentar acceder a él desde nuestro componente de activación.
‫Y puede llamarlo en el puntero de movimiento que tenemos en el componente de activación desde su configuración de componente de
‫marca, el booleano apropiado, ya sea que desee que se desbloquee o se bloquee nuevamente, pausar el video
‫y probar.
‫Bien, bienvenido de nuevo.
‫Así que voy a eliminar la propiedad de debería moverse. Voy a ir
‫a la sección pública justo debajo del componente TTIC y voy a crear un conjunto vacío que debería moverse tomando un valor booleano
‫al que llamaremos debería. muévete así.
‫Y luego vamos a tomar esto y pasar al CP de movimiento e implementarlo, reemplazando el punto y
‫coma, agregando los dos puntos que mueves, la clase de dos puntos y luego, básicamente, nuevamente podemos llamar a esto el
‫nuevo debe moverse y podemos decir que debería moverse es igual a nuevo debería moverse.
‫Ahora puede que se pregunte, ¿por qué no hacemos que las variables sean accesibles públicamente
‫para que podamos configurarlas directamente?
‫Por lo general, esa no es una buena práctica en C++ porque si permite que alguien cambie sus variables, nunca se sabe qué
‫podría estar pasando con ellos.
‫Mientras que si tiene un método allí para hacerlo por usted, le permite cambiar más adelante la forma en que estructura las variables
‫internas sin tener que cambiar sus funciones públicas, lo que significa que hay menos actualizaciones para las diferentes clases
‫que tiene que hacer.
‫Por lo general, como regla, siempre usamos setters y getters si necesitamos acceder a variables en
‫otras clases.
‫Así que ahora que hemos creado esa nueva función, vayamos al componente trigonométrico CP donde actualmente tenemos
‫nuestros mensajes de registro.
‫Lo que queremos hacer es acceder a nuestro puntero de movimiento, por lo que vamos a hacer que el conjunto de flechas de movimiento se mueva.
‫Y en el caso de que tengamos un actor aceptable, eso debería ser cierto.
‫Debemos mover el punto y coma al final de la línea.
‫Y en el caso contrario, bueno, entonces probablemente no deberíamos.
‫Así que vamos a mover el conjunto de flechas que debe moverse y entre paréntesis poner falso, eliminar esa R adicional que tenía al
‫final de mi método y volver a compilar ahora en este caso porque solo agregué esta función en
‫C++ land y no es un plano invocable.
‫No creo que necesite reiniciar el editor para que funcione esta funcionalidad, cerrar nuestro
‫registro de salida, ir hacia nuestra gárgola y comenzar a jugar y recogerlo.
‫Salgamos de esta jaula y metámosla en la alcoba y dicen, Se está moviendo hacia abajo, pero se detiene tan pronto como la gárgola se
‫cae, lo cual no es ideal porque la gárgola no está realmente sujeta en su lugar y la pared
‫no lo está. completamente hacia abajo.
‫Y debido a que está simulando la física, saldrá de ese nicho, ¿no es así?
‫Entonces, lo que debemos hacer es asegurarnos de que una vez que lo soltamos en nuestra área de activación, se fije allí y
‫simplemente se quede.
‫Así que ese será el tema de la próxima conferencia.
‫Te veré allá.