﻿1
00:00:03,980 --> 00:00:05,150
‫Hola y bienvenido.

2
00:00:05,150 --> 00:00:11,810
‫En esta lección, tomaremos nuestro lío de planos y los organizaremos ordenadamente en funciones para que podamos

3
00:00:11,810 --> 00:00:17,600
‫leer y comprender fácilmente lo que sucede en nuestro gráfico de eventos de planos.

4
00:00:17,870 --> 00:00:19,550
‫Vamos a sumergirnos y ver cómo hacer esto.

5
00:00:20,630 --> 00:00:25,970
‫Ahora, si alejamos nuestro gráfico de eventos, podemos ver que comienza a tener mucho ruido.

6
00:00:25,970 --> 00:00:28,580
‫También puedo ver un par de nodos que no están conectados a nada.

7
00:00:28,580 --> 00:00:33,740
‫Hay un nodo para obtener munición, que voy a eliminar, y un nodo para establecer munición, pero pueden ver que se está volviendo

8
00:00:33,740 --> 00:00:34,310
‫muy ruidoso.

9
00:00:34,310 --> 00:00:36,800
‫Cada vez es más difícil entender lo que está pasando aquí.

10
00:00:36,830 --> 00:00:45,320
‫Ahora, una solución típica que la gente hace es decir: Bueno, este bloque de nodos aquí tiene que ver con generar el

11
00:00:45,320 --> 00:00:45,950
‫proyectil.

12
00:00:45,950 --> 00:00:47,090
‫Entonces puedo seleccionar estos.

13
00:00:47,300 --> 00:00:54,020
‫Puedo presionar la tecla C y va a poner un bloque alrededor de esto llamado bloque de comentarios.

14
00:00:54,020 --> 00:01:02,300
‫Y luego podría escribir proyectiles de generación y eso me permite saber qué está haciendo ese bloque de código.

15
00:01:02,300 --> 00:01:05,180
‫Esa es ciertamente una forma de organizar su código.

16
00:01:05,540 --> 00:01:12,530
‫Sin embargo, en mi opinión, no es la mejor manera y tenemos mejores herramientas para hacer esto llamadas funciones.

17
00:01:12,710 --> 00:01:14,180
‫Entonces, ¿qué todas las funciones?

18
00:01:14,750 --> 00:01:20,450
‫Las funciones ejecutan bloques de planos y hacen que nuestros juegos hagan cosas.

19
00:01:20,480 --> 00:01:25,100
‫Muchos nodos proporcionados por Unreal ya son funciones.

20
00:01:25,430 --> 00:01:27,350
‫Así que nos hemos encontrado con estos.

21
00:01:27,350 --> 00:01:33,140
‫Cuando vas y haces zoom, digamos en nuestro nodo de proyectil de actor de generación, esa es una función.

22
00:01:33,140 --> 00:01:39,380
‫Cuando observamos agregar impulso, esa es una función para la mayoría de estos nodos, incluso cosas como adelantar el vector

23
00:01:39,380 --> 00:01:44,180
‫activo que no tiene un pedal de ejecución no es azul también es una función que

24
00:01:44,180 --> 00:01:50,870
‫puede notar porque tiene un pequeño símbolo f en la parte superior izquierda que significa función, pero no estamos restringidos a las

25
00:01:50,870 --> 00:01:52,340
‫funciones que proporciona Unreal.

26
00:01:52,340 --> 00:01:56,810
‫También podemos crear nuestras propias funciones, y es muy fácil hacerlo en planos.

27
00:01:57,140 --> 00:02:02,570
‫Nos permiten mantenernos organizados y nos permiten reutilizar bloques de código.

28
00:02:02,570 --> 00:02:06,320
‫Entonces eso es mejor que un comentario porque un comentario tienes que copiar y pegar.

29
00:02:06,590 --> 00:02:12,470
‫Mientras que una función nos permite compartir un bloque de código entre múltiples lugares de uso.

30
00:02:12,710 --> 00:02:19,010
‫Así que echemos un vistazo a cómo podemos convertir algo como esto en un bloque de código.

31
00:02:19,700 --> 00:02:24,530
‫Bueno, podemos eliminar el bloque de comentarios, en primer lugar, porque no creo que sea necesario.

32
00:02:24,530 --> 00:02:31,280
‫En su lugar, voy a seleccionar todos los nodos desde Gets Play a -- hasta el final para agregar impulso,

33
00:02:31,280 --> 00:02:34,910
‫hacer clic derecho sobre ellos y seleccionar colapsar para funcionar.

34
00:02:35,480 --> 00:02:42,860
‫Y eso crea un nuevo bloque y reemplaza todos esos nodos anteriores que estaban allí antes.

35
00:02:42,870 --> 00:02:46,250
‫Ahora voy a obtener esta función, un nombre que puede ver en el panel de la izquierda.

36
00:02:46,610 --> 00:02:53,840
‫Se creó una nueva función en la sección de función en el panel de mi modelo y se seleccionó para

37
00:02:53,840 --> 00:02:59,450
‫que yo cambie el nombre automáticamente porque definitivamente, definitivamente deberíamos cambiar el nombre de estas funciones

38
00:02:59,450 --> 00:03:01,970
‫y lo llamaré proyectil de generación.

39
00:03:02,120 --> 00:03:09,380
‫Y una buena denominación es absolutamente vital en la programación porque el código se trata esencialmente de comunicación.

40
00:03:09,590 --> 00:03:14,540
‫Estamos tratando de comunicarnos con nosotros mismos para que podamos entender lo que hemos escrito.

41
00:03:14,780 --> 00:03:17,180
‫Estamos tratando de comunicarnos con nosotros mismos en el futuro.

42
00:03:17,180 --> 00:03:21,650
‫Cuando volvemos a este proyecto y olvidé por qué lo escribimos de cierta manera, y cuando trabajas

43
00:03:21,650 --> 00:03:25,180
‫en equipo, también estás tratando de comunicarte con el resto de tu equipo.

44
00:03:25,370 --> 00:03:30,920
‫Algunos dicen que una buena métrica para la calidad del código es cuánto diablos hay por minuto.

45
00:03:31,220 --> 00:03:36,440
‫Entonces, si estás leyendo un fragmento de código y dices: Qué diablos, 50 veces por minuto, es un código

46
00:03:36,440 --> 00:03:41,000
‫bastante malo si lo lees y solo dices: Qué diablos, una o dos veces por minuto,

47
00:03:41,000 --> 00:03:44,900
‫entonces probablemente sea un código bastante bueno y siempre obtendrás algo, ¿qué diablos?

48
00:03:44,900 --> 00:03:49,010
‫Así que solo estamos tratando de reducir ese número que funciona.

49
00:03:49,220 --> 00:03:51,590
‫Fundamentalmente, tendemos a nombrar funciones como verbos.

50
00:03:51,590 --> 00:03:58,040
‫Hay algunas excepciones a esta regla de las que hablaremos más adelante, pero la mayoría de las funciones son cosas que

51
00:03:58,040 --> 00:03:59,210
‫están haciendo algo.

52
00:03:59,210 --> 00:04:06,200
‫Así que usamos palabras para hacer y si no está seguro de cómo nombrar esta función, entonces si está trabajando en

53
00:04:06,200 --> 00:04:11,360
‫un equipo, puede hablar con alguien más y preguntarle cómo cree que debería llamarlo y qué

54
00:04:11,360 --> 00:04:13,970
‫tipo de cosas. tener sentido para ellos.

55
00:04:13,970 --> 00:04:19,700
‫A menudo descubre que está tan arraigado en un problema que no puede pensar en cómo hablar de él.

56
00:04:19,760 --> 00:04:26,390
‫Así que puede que se pregunte: Bueno, ¿adónde fue todo mi código cuando creé esta función de proyectil de

57
00:04:26,390 --> 00:04:26,930
‫generación?

58
00:04:27,440 --> 00:04:34,580
‫Bueno, puede volver a ese detalle de cómo se implementa realmente esta función haciendo doble clic en el gráfico

59
00:04:34,580 --> 00:04:40,640
‫de eventos o haciendo clic en la pestaña Mis Blueprints o haciendo doble clic en la pestaña

60
00:04:40,670 --> 00:04:41,780
‫Mis Blueprints.

61
00:04:41,780 --> 00:04:48,800
‫Y puede ver que tenemos todos nuestros nodos aún residentes aquí, ahora están en una pestaña separada, por lo

62
00:04:49,040 --> 00:04:56,180
‫que puede volver a la pestaña del gráfico de eventos o puede sumergirse en la pestaña del proyectil Spawn que

63
00:04:56,180 --> 00:04:57,740
‫muestra solo ese función.

64
00:04:58,730 --> 00:05:04,880
‫Y pueden ver que hay un nuevo nodo aquí, este pequeño nodo morado, que es el punto de entrada a nuestra

65
00:05:04,880 --> 00:05:05,390
‫función.

66
00:05:05,390 --> 00:05:09,740
‫Esto dice que esto es lo que debemos hacer cuando se inicia la función.

67
00:05:09,740 --> 00:05:10,970
‫Es solo un punto de entrada.

68
00:05:11,240 --> 00:05:16,850
‫Y cada vez que se llame, ese nodo se activará y activará el resto de los nodos dentro de

69
00:05:16,850 --> 00:05:17,570
‫nuestra función.

70
00:05:17,720 --> 00:05:19,690
‫Así que volviendo al gráfico de eventos y.

71
00:05:19,900 --> 00:05:25,690
‫Alejando, tal vez uniendo un poco los ánodos ahora que hemos hecho nuestro gráfico de nodos mucho más pequeño y más

72
00:05:25,690 --> 00:05:26,590
‫fácil de leer.

73
00:05:26,950 --> 00:05:33,520
‫Creo que hay un par de candidatos más aquí para que saquemos funciones y reemplacemos cosas.

74
00:05:34,030 --> 00:05:38,260
‫Uno de ellos sería donde estamos imprimiendo munición.

75
00:05:38,410 --> 00:05:43,720
‫Entonces, en este caso, imprimir munición es algo que hacemos en dos lugares.

76
00:05:43,720 --> 00:05:47,600
‫Lo hacemos al comenzar el juego y lo hacemos hacia abajo en el proyectil de generación.

77
00:05:48,310 --> 00:05:53,920
‫Y luego, el otro lugar, la otra cosa, la pieza de funcionalidad que podríamos extraer en

78
00:05:54,310 --> 00:06:01,150
‫una función sería donde estamos disminuyendo la munición que podría ponerse en una función de reducción de munición en su lugar.

79
00:06:01,240 --> 00:06:09,490
‫Entonces, justo antes de presentarles el desafío, me gustaría eliminar el nodo de conversión e imprimir el nodo

80
00:06:09,670 --> 00:06:15,240
‫de cadena después del proyectil de generación porque esto complicará las cosas.

81
00:06:15,250 --> 00:06:21,320
‫Me gustaría copiar la funcionalidad desde arriba para que ambos se vean exactamente iguales.

82
00:06:21,340 --> 00:06:29,140
‫Entonces, si copiamos los tres nodos de Begin Play y los pegamos abajo y conectamos los pines de ejecución, entonces puede

83
00:06:29,140 --> 00:06:35,020
‫ver que tenemos exactamente el mismo conjunto de nodos, tenemos la misma funcionalidad entre los

84
00:06:35,020 --> 00:06:39,910
‫dos, y no hay confusión cuando llegamos a extraer esto en función.

85
00:06:39,970 --> 00:06:43,200
‫Así que me gustaría desafiarte a hacer algunas funciones más.

86
00:06:43,210 --> 00:06:47,090
‫Lo primero que recomendaría hacer es disminuir la munición.

87
00:06:47,110 --> 00:06:51,820
‫Entonces, tomando los tres nodos involucrados en la disminución de munición, extrayéndolos en una función y dándoles

88
00:06:51,820 --> 00:06:52,510
‫un nombre.

89
00:06:53,020 --> 00:06:55,990
‫Y luego el segundo es munición impresa.

90
00:06:56,020 --> 00:07:03,220
‫Así que ahí vas a extraer la funcionalidad de obtener, convertir e imprimir la munición

91
00:07:03,220 --> 00:07:05,530
‫en una sola función.

92
00:07:05,860 --> 00:07:11,710
‫Y debido a que tenemos dos sitios donde estamos imprimiendo munición, desea eliminar uno de ellos y traer la

93
00:07:11,710 --> 00:07:16,750
‫función en su lugar, lo que puede hacer arrastrando desde el panel de mi plano.

94
00:07:17,380 --> 00:07:22,720
‫Y finalmente tenemos un par de mensajes de bienvenida, salida de nodos de mensajes de bienvenida.

95
00:07:22,720 --> 00:07:26,800
‫También puede extraerlos en una función de impresión de mensajes de bienvenida.

96
00:07:27,220 --> 00:07:28,900
‫Pausa el video y pruébalo.

97
00:07:32,110 --> 00:07:32,700
‫Bueno.

98
00:07:32,710 --> 00:07:33,430
‫Bienvenido de nuevo.

99
00:07:33,550 --> 00:07:37,390
‫Así que primero vamos a extraer nuestra munición reducida.

100
00:07:37,390 --> 00:07:41,590
‫Entonces, hay tres nodos involucrados que harán clic con el botón derecho en colapsar la función.

101
00:07:42,190 --> 00:07:47,710
‫Entonces lo llamaremos disminuir munición y eso es bastante sencillo.

102
00:07:47,710 --> 00:07:51,910
‫Así que genere proyectiles que disminuyan la munición y luego imprimiremos la munición.

103
00:07:51,910 --> 00:07:58,180
‫Así que tomemos los tres nodos, obtengamos la conversión y la cadena de impresión y haremos clic con el botón derecho

104
00:07:58,180 --> 00:08:01,750
‫en colapsar la función y llamaremos a esta munición de impresión.

105
00:08:02,560 --> 00:08:08,530
‫Ahora, como dije, tenemos esta funcionalidad repetida en dos lugares, así que eliminaremos donde hace esto y

106
00:08:08,530 --> 00:08:16,150
‫comenzaremos la placa y simplemente arrastraremos la munición de impresión de nuestra lista de funciones y conectaremos los pines de ejecución para

107
00:08:16,150 --> 00:08:19,570
‫que se ejecute después de nuestro cadena de impresión.

108
00:08:20,260 --> 00:08:25,480
‫Lo que me lleva a la última función que quiero crear, que dijimos llamará imprimir mensajes de bienvenida.

109
00:08:25,690 --> 00:08:27,610
‫Así que voy a seleccionar las dos cadenas de impresión.

110
00:08:27,610 --> 00:08:34,240
‫Tengo que comenzar a reproducir colapsar para que funcione y llamarlo imprimir mensajes de bienvenida.

111
00:08:34,420 --> 00:08:42,220
‫Y este nodo, ahora podemos reorganizar todos nuestros nodos para que sea mucho más fácil leer todo esto en una

112
00:08:42,220 --> 00:08:43,130
‫pantalla completa.

113
00:08:43,150 --> 00:08:49,900
‫Puede ver que ahora es mucho más fácil comprender la funcionalidad de nuestro juego porque todo cabe

114
00:08:49,900 --> 00:08:56,350
‫en una pantalla y está muy bien llevado a un nivel similar de abstracción y comprensión.

115
00:08:56,350 --> 00:09:02,800
‫Y esto es lo que llamaríamos código autodocumentado, porque es un código que no necesita comentarios o documentación

116
00:09:02,800 --> 00:09:04,690
‫para explicar lo que hace.

117
00:09:04,930 --> 00:09:06,850
‫Simplemente se lee como inglés.

118
00:09:07,210 --> 00:09:07,840
‫Buena cosa.

119
00:09:08,140 --> 00:09:09,880
‫Te veré en la próxima conferencia.

