﻿1
00:00:04,370 --> 00:00:05,390
‫Hola y bienvenido.

2
00:00:05,390 --> 00:00:12,170
‫En esta lección, estableceremos el vínculo entre el motor y el gatillo usando una técnica llamada inyección de dependencia

3
00:00:12,170 --> 00:00:18,230
‫para que al final de la lección, si metemos la gárgola, la puerta se mueva hacia abajo,

4
00:00:18,230 --> 00:00:20,810
‫o al menos parcialmente lo hace.

5
00:00:20,810 --> 00:00:24,260
‫Vamos a sumergirnos y ver cómo funciona esto.

6
00:00:25,080 --> 00:00:26,460
‫Y tomo una taza.

7
00:00:26,490 --> 00:00:33,030
‫Hemos visto que hay una dependencia, lo que llamamos una dependencia para el identificador de física.

8
00:00:33,030 --> 00:00:40,350
‫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

9
00:00:40,350 --> 00:00:42,960
‫que el componente de activación es el mismo.

10
00:00:42,960 --> 00:00:50,100
‫El componente activador, para hacer su trabajo correctamente, necesita tener acceso a un componente motor.

11
00:00:50,460 --> 00:00:57,360
‫Sin embargo, es un poco más complicado en este caso porque seguro, en el caso de nuestra puerta

12
00:00:57,360 --> 00:01:02,400
‫secreta, el gatillo y el objeto en movimiento están dentro del mismo actor.

13
00:01:02,730 --> 00:01:08,220
‫Por lo tanto, podría obtener un objeto encontrando el componente a de tipo en el actor.

14
00:01:08,220 --> 00:01:14,490
‫Pero, ¿y si tuviéramos esta situación en mi guión en la que quiero que mi gatillo esté en una

15
00:01:14,490 --> 00:01:20,760
‫parte diferente de la habitación del actor que se está moviendo bien para permitir ese tipo de flexibilidad?

16
00:01:20,760 --> 00:01:26,940
‫Queremos que el disparador no tenga que buscar sus propias dependencias.

17
00:01:26,940 --> 00:01:30,330
‫Y en realidad hay un nombre para este tipo de concepto de programa.

18
00:01:30,330 --> 00:01:32,640
‫Se llama inyección de dependencia.

19
00:01:32,640 --> 00:01:37,680
‫Básicamente, es en el caso de que tengamos algo que diga, necesito otro objeto, pero no puedo encontrarlo

20
00:01:37,680 --> 00:01:40,230
‫yo mismo o no quiero encontrarlo yo mismo.

21
00:01:40,290 --> 00:01:47,940
‫Y a menudo es sensato no dejarlo en manos del objeto que está haciendo su propio trabajo, haciendo que tenga otro trabajo

22
00:01:47,940 --> 00:01:50,850
‫para tratar de apoderarse de un objeto.

23
00:01:51,300 --> 00:02:00,810
‫Entonces, la forma en que podemos hacer esto es crear un mecanismo para los planos que le indiquen al componente desencadenante

24
00:02:00,810 --> 00:02:02,730
‫dónde encontrar un motor.

25
00:02:02,910 --> 00:02:09,330
‫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.

26
00:02:09,810 --> 00:02:11,220
‫Así que va a ser público.

27
00:02:11,220 --> 00:02:16,980
‫Vamos a ponerlo en la sección pública debajo del componente de marca, y va

28
00:02:16,980 --> 00:02:22,710
‫a ser una función U para que pueda estar entre paréntesis, blueprint invocable.

29
00:02:23,280 --> 00:02:26,130
‫Y no es necesario que haya mucho para esta función.

30
00:02:26,130 --> 00:02:33,330
‫Va a ser nulo porque no lo necesita para devolver algo, pero se establecerá en el motor,

31
00:02:33,330 --> 00:02:40,860
‫por lo que establecerá un enlace al motor y para que establezca un enlace al motor, debe tomar

32
00:02:40,860 --> 00:02:43,620
‫un puntero a un componente motor.

33
00:02:43,620 --> 00:02:51,540
‫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

34
00:02:51,540 --> 00:02:52,440
‫esa línea.

35
00:02:52,830 --> 00:02:55,350
‫Y tenemos que almacenar esto en algún lugar.

36
00:02:55,350 --> 00:02:57,300
‫Así que vamos a crear una nueva variable privada.

37
00:02:57,300 --> 00:03:02,280
‫No va a ser una propiedad nueva y solo va a ser un puntero de movimiento

38
00:03:02,280 --> 00:03:04,530
‫U, que también llamaremos un motor.

39
00:03:04,560 --> 00:03:12,900
‫Así y lo que vamos a hacer es implementar este conjunto de movimiento en el CPP para que establezca este movimiento como un

40
00:03:12,900 --> 00:03:15,660
‫puntero, que de forma predeterminada será nulo.

41
00:03:16,050 --> 00:03:17,790
‫Y tenemos que hacer una cosa más.

42
00:03:17,790 --> 00:03:20,640
‫Tenemos que incluir el archivo de encabezado para nuestro motor.

43
00:03:21,150 --> 00:03:26,370
‫Ahora, en este caso, debido a que el archivo de encabezado está en la

44
00:03:26,370 --> 00:03:36,870
‫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

45
00:03:36,870 --> 00:03:38,100
‫tipo de motor.

46
00:03:38,280 --> 00:03:40,230
‫Así que vayamos a nuestro componente disparador.

47
00:03:40,230 --> 00:03:46,530
‫CP Y voy a poner esto debajo de nuestro componente de marca que vamos a implementar para mover conjuntos.

48
00:03:46,530 --> 00:03:52,500
‫Vamos a poner la clase que activas antes del componente y lo sangraremos.

49
00:03:53,400 --> 00:03:55,590
‫Elimina el punto y coma y agrega llaves.

50
00:03:55,590 --> 00:04:00,150
‫Y esencialmente todo lo que vamos a tener que hacer aquí, cambiemos el nombre solo en el archivo C++.

51
00:04:00,150 --> 00:04:06,060
‫En realidad, no importa si el nombre de los parámetros coincide entre el encabezado y C++.

52
00:04:06,060 --> 00:04:12,540
‫Entonces podemos cambiarlo aquí y decir que el nuevo motor es lo que viene para establecer el motor.

53
00:04:12,630 --> 00:04:20,010
‫Y así podemos establecer nuestra variable local, nuestra variable de clase movedor igual al nuevo movedor.

54
00:04:20,010 --> 00:04:27,030
‫Así que ahora es bastante importante que no omita este paso de cambio de nombre porque si el parámetro de

55
00:04:27,030 --> 00:04:34,170
‫entrada tiene el mismo nombre que una de las variables en la clase, irreal por defecto establecerá que sea un error.

56
00:04:34,170 --> 00:04:39,720
‫Se llama sombreado y Unreal no quiere que lo haga, por lo que debe asegurarse de tener el nombre de

57
00:04:39,720 --> 00:04:44,970
‫su parámetro diferente al de la variable ahora porque estas nuevas funciones no siempre aparecen con los cambios

58
00:04:44,970 --> 00:04:46,260
‫de codificación en vivo.

59
00:04:46,260 --> 00:04:52,290
‫Cerraré la recompilación del editor desde el código de Visual Studio y luego lo reiniciaré desde el nuevo

60
00:04:52,290 --> 00:04:52,920
‫proyecto.

61
00:04:52,950 --> 00:04:58,950
‫Ahora vayamos al cajón de contenido, abramos nuestro plano de pared secreto y luego, desde

62
00:04:58,950 --> 00:05:06,080
‫nuestro nodo Comenzar reproducción en el gráfico de eventos, salgamos de aquí y busquemos el motor del set.

63
00:05:06,090 --> 00:05:08,190
‫Ahora observe que hay dos opciones aquí.

64
00:05:08,190 --> 00:05:15,210
‫Uno, sería establecer el componente que también se llama mover, y uno es una función en el componente de

65
00:05:15,210 --> 00:05:15,750
‫activación.

66
00:05:15,750 --> 00:05:18,840
‫Así que queremos seleccionar el que es una función en el componente de disparo.

67
00:05:19,050 --> 00:05:27,120
‫Y luego lo que queremos hacer es arrastrar nuestro componente motor como los otros argumentos a esta función y eso

68
00:05:27,120 --> 00:05:28,110
‫debería funcionar.

69
00:05:28,110 --> 00:05:31,350
‫Se establece el motor al comienzo del juego.

70
00:05:31,350 --> 00:05:37,800
‫Así que ahora, esencialmente, lo que queremos que suceda es que nuestro componente desencadenante debería estar

71
00:05:37,800 --> 00:05:41,400
‫configurando y configurando el booleano debería moverse aquí.

72
00:05:41,400 --> 00:05:46,110
‫Ese va a ser mi desafío para que usted cree algunas funciones públicas en mover y mover.

73
00:05:46,110 --> 00:05:51,780
‫CP Debe establecerse, debe moverse y debe actualizar su variable de propiedad.

74
00:05:51,780 --> 00:05:56,970
‫De hecho, puede hacer que ya no sea una propiedad nueva porque vamos a configurarlo a través del código

75
00:05:56,970 --> 00:05:59,760
‫ahora y luego puede ponerlo en la sección pública.

76
00:05:59,760 --> 00:06:04,740
‫Debe ser público porque vamos a intentar acceder a él desde nuestro componente de activación.

77
00:06:04,740 --> 00:06:11,850
‫Y puede llamarlo en el puntero de movimiento que tenemos en el componente de activación desde su configuración de componente de

78
00:06:11,850 --> 00:06:17,970
‫marca, el booleano apropiado, ya sea que desee que se desbloquee o se bloquee nuevamente, pausar el video

79
00:06:17,970 --> 00:06:18,960
‫y probar.

80
00:06:22,250 --> 00:06:23,690
‫Bien, bienvenido de nuevo.

81
00:06:23,690 --> 00:06:29,410
‫Así que voy a eliminar la propiedad de debería moverse. Voy a ir

82
00:06:29,420 --> 00:06:39,800
‫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

83
00:06:39,800 --> 00:06:43,010
‫al que llamaremos debería. muévete así.

84
00:06:43,280 --> 00:06:51,560
‫Y luego vamos a tomar esto y pasar al CP de movimiento e implementarlo, reemplazando el punto y

85
00:06:51,560 --> 00:07:00,920
‫coma, agregando los dos puntos que mueves, la clase de dos puntos y luego, básicamente, nuevamente podemos llamar a esto el

86
00:07:00,920 --> 00:07:08,030
‫nuevo debe moverse y podemos decir que debería moverse es igual a nuevo debería moverse.

87
00:07:08,030 --> 00:07:12,860
‫Ahora puede que se pregunte, ¿por qué no hacemos que las variables sean accesibles públicamente

88
00:07:12,860 --> 00:07:14,660
‫para que podamos configurarlas directamente?

89
00:07:14,780 --> 00:07:22,520
‫Por lo general, esa no es una buena práctica en C++ porque si permite que alguien cambie sus variables, nunca se sabe qué

90
00:07:22,520 --> 00:07:24,620
‫podría estar pasando con ellos.

91
00:07:24,620 --> 00:07:32,090
‫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

92
00:07:32,090 --> 00:07:38,240
‫internas sin tener que cambiar sus funciones públicas, lo que significa que hay menos actualizaciones para las diferentes clases

93
00:07:38,240 --> 00:07:39,920
‫que tiene que hacer.

94
00:07:39,920 --> 00:07:46,070
‫Por lo general, como regla, siempre usamos setters y getters si necesitamos acceder a variables en

95
00:07:46,070 --> 00:07:46,850
‫otras clases.

96
00:07:46,850 --> 00:07:52,100
‫Así que ahora que hemos creado esa nueva función, vayamos al componente trigonométrico CP donde actualmente tenemos

97
00:07:52,100 --> 00:07:53,570
‫nuestros mensajes de registro.

98
00:07:53,570 --> 00:08:01,670
‫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.

99
00:08:01,670 --> 00:08:06,140
‫Y en el caso de que tengamos un actor aceptable, eso debería ser cierto.

100
00:08:06,140 --> 00:08:08,600
‫Debemos mover el punto y coma al final de la línea.

101
00:08:08,690 --> 00:08:12,200
‫Y en el caso contrario, bueno, entonces probablemente no deberíamos.

102
00:08:12,200 --> 00:08:20,510
‫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

103
00:08:20,510 --> 00:08:26,780
‫final de mi método y volver a compilar ahora en este caso porque solo agregué esta función en

104
00:08:26,780 --> 00:08:30,020
‫C++ land y no es un plano invocable.

105
00:08:30,020 --> 00:08:34,940
‫No creo que necesite reiniciar el editor para que funcione esta funcionalidad, cerrar nuestro

106
00:08:34,940 --> 00:08:39,530
‫registro de salida, ir hacia nuestra gárgola y comenzar a jugar y recogerlo.

107
00:08:39,770 --> 00:08:49,400
‫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

108
00:08:49,400 --> 00:08:56,600
‫cae, lo cual no es ideal porque la gárgola no está realmente sujeta en su lugar y la pared

109
00:08:56,600 --> 00:08:59,060
‫no lo está. completamente hacia abajo.

110
00:08:59,150 --> 00:09:03,020
‫Y debido a que está simulando la física, saldrá de ese nicho, ¿no es así?

111
00:09:03,020 --> 00:09:10,580
‫Entonces, lo que debemos hacer es asegurarnos de que una vez que lo soltamos en nuestra área de activación, se fije allí y

112
00:09:10,580 --> 00:09:11,780
‫simplemente se quede.

113
00:09:11,780 --> 00:09:14,210
‫Así que ese será el tema de la próxima conferencia.

114
00:09:14,210 --> 00:09:15,200
‫Te veré allá.

