﻿1
00:00:04,320 --> 00:00:04,950
‫Hola y bienvenido.

2
00:00:04,950 --> 00:00:13,080
‫En esta lección, generaremos nuestro rifle en tiempo de ejecución desde nuestra clase de caracteres en C++.

3
00:00:13,080 --> 00:00:15,030
‫Vamos a sumergirnos y ver cómo se hace.

4
00:00:16,500 --> 00:00:16,770
‫Bueno.

5
00:00:16,770 --> 00:00:19,890
‫Así que queremos que nuestro arma se reproduzca.

6
00:00:19,890 --> 00:00:26,070
‫Como hijo del personaje de Shoots, el primer punto de llamada es poder engendrar a ese actor desde dentro

7
00:00:26,070 --> 00:00:27,180
‫de otro actor.

8
00:00:27,960 --> 00:00:29,140
‫Vamos a hacer esto en tiempo de ejecución.

9
00:00:29,140 --> 00:00:32,880
‫Vamos a comenzar a jugar porque esa es la forma en que puedes hacerlo cuando estás engendrando.

10
00:00:32,880 --> 00:00:34,230
‫Los actores deben hacerlo en tiempo de ejecución.

11
00:00:34,740 --> 00:00:38,400
‫Y la forma en que vamos a hacer esto es que vamos a apoderarnos del mundo primero.

12
00:00:38,400 --> 00:00:44,760
‫Así que obtén mundo y luego llamaremos a una función en Obtener mundo, por cierto, mundo y nivel son sinónimos.

13
00:00:44,780 --> 00:00:48,720
‫Entonces, lo que en realidad estamos haciendo aquí es subir al nivel y

14
00:00:48,720 --> 00:00:53,970
‫decir, oye, nivel, ¿puedes crear como actor porque todos los actores esencialmente pertenecen o viven en un nivel?

15
00:00:54,780 --> 00:00:58,200
‫Entonces estamos diciendo, ya sabes, engendrar actor para mí, por favor.

16
00:00:58,920 --> 00:01:04,760
‫Y este es un actor de generación que toma una plantilla.

17
00:01:04,760 --> 00:01:10,200
‫Entonces puedes decir, quiero que este actor que voy a engendrar sea un arma tipo A.

18
00:01:10,680 --> 00:01:17,910
‫Y para que eso funcione, vamos a necesitar tener un hash incluido aquí para el arma.

19
00:01:18,930 --> 00:01:19,380
‫h

20
00:01:21,270 --> 00:01:29,730
‫Y luego vamos a tomar un argumento y el argumento para engendrar en realidad puede ser un tipo de clase.

21
00:01:29,730 --> 00:01:33,750
‫Entonces, de manera predeterminada, seguirá adelante y generará el C ++.

22
00:01:33,750 --> 00:01:38,160
‫Pero aquí queremos engendrar el modelo hijo de esta arma.

23
00:01:38,160 --> 00:01:43,530
‫Así que tenemos que averiguar qué va a ser lo que debe conectarse en Blueprint.

24
00:01:43,530 --> 00:01:46,050
‫No se puede conectar aquí en C++, al menos no fácilmente.

25
00:01:46,050 --> 00:01:48,180
‫El mejor lugar para hacerlo es en Blueprint.

26
00:01:48,420 --> 00:01:53,730
‫Así que vamos a hacer un ALLO para ir al archivo de encabezado de nuestro personaje tirador y vamos a

27
00:01:53,730 --> 00:01:55,380
‫agregar una nueva propiedad aquí.

28
00:01:56,390 --> 00:02:03,400
‫Para permitirnos configurar la clase a la que debemos apuntar para generar un acto.

29
00:02:03,410 --> 00:02:06,800
‫¿Qué clase de plano deberíamos generar a partir de este personaje de disparos?

30
00:02:07,430 --> 00:02:17,450
‫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

31
00:02:17,450 --> 00:02:22,310
‫puede cambiar el tipo de arma que estamos usando en tiempo de ejecución, mientras que

32
00:02:22,550 --> 00:02:27,920
‫las jugadas de selección ya se han llamado que las armas ya se han generado y, por

33
00:02:27,920 --> 00:02:30,680
‫lo tanto, en realidad no actualizaría nada.

34
00:02:30,680 --> 00:02:34,880
‫Por lo tanto, no queremos que sea editable para dar a las personas una impresión falsa de lo que se puede hacer.

35
00:02:35,540 --> 00:02:41,750
‫Y luego aquí vamos a usar una macro llamada subclase T de la que puede o no haberse topado

36
00:02:41,750 --> 00:02:42,320
‫antes.

37
00:02:43,310 --> 00:02:45,170
‫Y la subclase T es una plantilla.

38
00:02:45,170 --> 00:02:52,310
‫Así que usamos estos paréntesis angulares nuevamente y queremos que diga una subclase de arma.

39
00:02:52,880 --> 00:02:59,600
‫Y básicamente lo que esto significa es que permite que los planos restrinjan las clases que podemos

40
00:02:59,600 --> 00:03:05,420
‫seleccionar a solo las clases que son subclases de la clase Gun C++.

41
00:03:06,050 --> 00:03:10,760
‫Ahora, esto no va a ser un puntero porque no estamos apuntando a una instancia real del arma.

42
00:03:11,120 --> 00:03:15,350
‫Lo que estamos obteniendo aquí en esta variable es una clase en sí misma.

43
00:03:15,590 --> 00:03:18,320
‫En este caso, es una clase modelo, pero sigue siendo una clase.

44
00:03:18,950 --> 00:03:25,670
‫Entonces, lo que vamos a querer llamar a esto es la clase de armas, solo para dejar muy claro que esto no

45
00:03:25,670 --> 00:03:27,620
‫es realmente el arma en sí.

46
00:03:28,160 --> 00:03:36,770
‫Queremos otra propiedad suya aquí para almacenar el arma y eso no será un valor predeterminado de edición.

47
00:03:36,770 --> 00:03:42,320
‫Básicamente, no queremos hacer de esto una propiedad visible en absoluto, pero estará en un puntero de

48
00:03:42,440 --> 00:03:43,100
‫pistola.

49
00:03:43,100 --> 00:03:43,850
‫¿Ver la diferencia?

50
00:03:43,850 --> 00:03:50,720
‫Uno de ellos es una subclase t de pistola, el otro es un puntero de pistola y este es el arma real.

51
00:03:50,750 --> 00:03:54,470
‫Una vez que hayamos creado una instancia de la clase, ahí es donde la almacenaremos.

52
00:03:55,040 --> 00:04:03,830
‫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

53
00:04:03,830 --> 00:04:10,130
‫arma igual para que el engendro mundial actúe como un arma y el argumento va a pasar aquí

54
00:04:10,130 --> 00:04:14,690
‫es la clase de arma que vamos a establecer en los planos.

55
00:04:15,050 --> 00:04:17,750
‫Así que vamos a intentar compilar esto.

56
00:04:17,750 --> 00:04:18,860
‫Puede darnos algunos errores.

57
00:04:18,860 --> 00:04:23,450
‫A ver, tengo el registro de mensajes abierto con el registro de compilación.

58
00:04:23,450 --> 00:04:28,190
‫Y efectivamente, estamos recibiendo algunos errores aquí en el archivo principal que dice identificador no declarado

59
00:04:28,670 --> 00:04:31,040
‫porque necesitamos reenviar la declaración del arma.

60
00:04:31,280 --> 00:04:32,830
‫Así que voy a hacer esto en la parte superior.

61
00:04:32,930 --> 00:04:35,420
‫Eso es en dos lugares que voy a decir clase.

62
00:04:36,490 --> 00:04:39,180
‫Una pistola como la vista.

63
00:04:39,820 --> 00:04:45,040
‫Y solo un recordatorio, declarar hacia adelante de esta manera significa que podemos mantener nuestros tiempos de compilación bajos al no

64
00:04:45,040 --> 00:04:47,350
‫incluir demasiado en la cabeza pesada de los archivos.

65
00:04:47,950 --> 00:04:49,330
‫Intentemos recompilar y ver.

66
00:04:49,850 --> 00:04:51,210
‫Parece que ese fue el único error.

67
00:04:51,220 --> 00:04:52,690
‫Ahora está compilado con éxito.

68
00:04:52,720 --> 00:04:55,840
‫Sigamos adelante, presionemos reproducir y veamos qué sucede.

69
00:04:55,870 --> 00:04:56,380
‫Salida.

70
00:04:56,410 --> 00:04:57,520
‫Echa un vistazo a nuestro.

71
00:04:57,850 --> 00:05:00,580
‫Básicamente, queremos echar un vistazo a la carga del mensaje, que no tengo abierto.

72
00:05:00,850 --> 00:05:07,720
‫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í.

73
00:05:07,750 --> 00:05:08,110
‫Sí.

74
00:05:08,140 --> 00:05:10,780
‫El actor de generación falló porque no se especificó ninguna clase.

75
00:05:10,810 --> 00:05:11,200
‫Por supuesto.

76
00:05:11,230 --> 00:05:14,710
‫No se especificó ninguna clase porque aún no la configuramos en blueprint.

77
00:05:14,950 --> 00:05:21,160
‫Así que esto lo guardaré como un desafío para que conectes el arma, encuentres la propiedad en

78
00:05:21,160 --> 00:05:25,600
‫nuestros planos de personajes, configures el arma correcta y pruebes que genera.

79
00:05:25,600 --> 00:05:26,650
‫Pausa el video y pruébalo.

80
00:05:26,710 --> 00:05:27,520
‫Bien, bienvenido de nuevo.

81
00:05:27,530 --> 00:05:36,190
‫Así que vayamos a nuestro personaje tirador, BP, y encontremos la propiedad que debería estar en la ruta o

82
00:05:36,190 --> 00:05:37,150
‫la clase.

83
00:05:37,150 --> 00:05:40,750
‫Los valores predeterminados entran en detalles y disparan a un personaje.

84
00:05:40,780 --> 00:05:47,350
‫Puede ver que aquí tenemos una rotación que hemos configurado y tenemos nuestra clase de pistola, que es un menú

85
00:05:47,350 --> 00:05:52,060
‫desplegable que me permite elegir entre que la pistola sea la pistola C++.

86
00:05:52,180 --> 00:05:54,250
‫Y aquí es donde una convención de nomenclatura resulta útil.

87
00:05:54,520 --> 00:05:57,640
‫Las cosas prefijadas con el guión bajo BP son los planos.

88
00:05:57,880 --> 00:06:00,280
‫Así que queremos un rifle de subrayado AB BP.

89
00:06:00,310 --> 00:06:05,620
‫Continuaremos y seleccionaremos esa compilación guardada, iremos a la escena y presionaremos reproducir.

90
00:06:06,190 --> 00:06:11,680
‫Ahora, con suerte, no tenemos ningún error acerca de generar un arma.

91
00:06:12,070 --> 00:06:13,390
‫El arma debería haber aparecido.

92
00:06:13,390 --> 00:06:14,170
‫Bueno.

93
00:06:14,500 --> 00:06:20,590
‫Y para saber si es así, podemos presionar F8 y echar un vistazo al contorno del mundo.

94
00:06:20,650 --> 00:06:26,140
‫Si hago que el contorno del mundo sea un poco más grande, puedo buscar el rifle de subrayado BP.

95
00:06:26,260 --> 00:06:26,890
‫Viva.

96
00:06:26,890 --> 00:06:32,320
‫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.

97
00:06:32,530 --> 00:06:34,750
‫Ese será el tema de la próxima conferencia.

98
00:06:34,750 --> 00:06:36,520
‫Así que te veré allí.

