﻿1
00:00:04,320 --> 00:00:04,950
‫Olá e bem-vindo.

2
00:00:04,950 --> 00:00:13,080
‫Nesta palestra vamos gerar nosso rifle em tempo de execução da nossa classe de personagem em C++.

3
00:00:13,080 --> 00:00:15,030
‫Vamos mergulhar e ver como é feito.

4
00:00:16,500 --> 00:00:16,770
‫OK.

5
00:00:16,770 --> 00:00:19,890
‫Então, queremos que nossa arma desova.

6
00:00:19,890 --> 00:00:26,070
‫Como filho do personagem de filmagem, o primeiro ponto de chamada é ser capaz de gerar esse ator de dentro

7
00:00:26,070 --> 00:00:27,180
‫de outro ator.

8
00:00:27,960 --> 00:00:29,140
‫Nós vamos fazer isso em tempo de execução.

9
00:00:29,140 --> 00:00:32,880
‫Vamos começar a jogar porque é assim que você pode fazer isso quando está desovando.

10
00:00:32,880 --> 00:00:34,230
‫Os atores precisam fazer isso em tempo de execução.

11
00:00:34,740 --> 00:00:38,400
‫E a maneira como vamos fazer isso é que vamos nos apossar do mundo primeiro.

12
00:00:38,400 --> 00:00:44,760
‫Então pegue mundo e então vamos chamar uma função em Obter Mundo, aliás, mundo e nível como sinônimos.

13
00:00:44,780 --> 00:00:48,720
‫Então, o que estamos realmente fazendo aqui é subir ao nível e dizer,

14
00:00:48,720 --> 00:00:53,970
‫ei, nível, você pode criar como ator porque todos os atores essencialmente pertencem ou vivem em um nível.

15
00:00:54,780 --> 00:00:58,200
‫Então estamos dizendo, você sabe, spawn ator para mim, por favor.

16
00:00:58,920 --> 00:01:04,760
‫E este é um ator de desova que usa um modelo.

17
00:01:04,760 --> 00:01:10,200
‫Então você pode dizer, eu quero que esse ator que eu vou gerar seja uma arma tipo A.

18
00:01:10,680 --> 00:01:17,910
‫E para que isso funcione, vamos precisar ter um include aqui em cima hash include para a arma.

19
00:01:18,930 --> 00:01:19,380
‫H.

20
00:01:21,270 --> 00:01:29,730
‫E então vamos pegar um argumento e o argumento para gerar é, na verdade, pode ser um tipo de classe.

21
00:01:29,730 --> 00:01:33,750
‫Então, por padrão, ele irá em frente e gerará o C++.

22
00:01:33,750 --> 00:01:38,160
‫Mas aqui queremos gerar o filho do projeto desta arma.

23
00:01:38,160 --> 00:01:43,530
‫Então, precisamos descobrir o que será que precisa ser conectado no Blueprint.

24
00:01:43,530 --> 00:01:46,050
‫Ele não pode ser conectado aqui em C++, pelo menos não facilmente.

25
00:01:46,050 --> 00:01:48,180
‫O melhor lugar para fazer isso é no Blueprint.

26
00:01:48,420 --> 00:01:53,730
‫Então, vamos fazer um ALLO para ir para o arquivo de cabeçalho do nosso personagem atirador e adicionar

27
00:01:53,730 --> 00:01:55,380
‫uma nova propriedade você aqui.

28
00:01:56,390 --> 00:02:03,400
‫Para nos permitir configurar a classe que devemos apontar para gerar um ato.

29
00:02:03,410 --> 00:02:06,800
‫Qual classe de projeto devemos gerar desse personagem de atirador?

30
00:02:07,430 --> 00:02:17,450
‫Vamos tê-lo apenas como padrão de edição e editar padrões apenas porque não queremos editar isso em tempo de execução porque daria uma falsa impressão de que

31
00:02:17,450 --> 00:02:22,310
‫você pode alterar o tipo de arma que estamos usando tempo de execução,

32
00:02:22,550 --> 00:02:27,920
‫enquanto a seleção de peças já foi chamada de que as armas já foram

33
00:02:27,920 --> 00:02:30,680
‫geradas e, portanto, não atualizaria nada.

34
00:02:30,680 --> 00:02:34,880
‫Portanto, não queremos torná-lo editável para não dar às pessoas uma falsa impressão do que pode ser feito.

35
00:02:35,540 --> 00:02:41,750
‫E então aqui vamos usar uma macro chamada subclasse T da qual você pode ou não ter encontrado

36
00:02:41,750 --> 00:02:42,320
‫antes.

37
00:02:43,310 --> 00:02:45,170
‫E a subclasse T é um modelo.

38
00:02:45,170 --> 00:02:52,310
‫Então, usamos esses colchetes angulares novamente e queremos dizer uma subclasse de arma.

39
00:02:52,880 --> 00:02:59,600
‫E basicamente o que isso significa é que ele permite que os blueprints restrinjam as classes das

40
00:02:59,600 --> 00:03:05,420
‫quais podemos selecionar apenas as classes que são subclasses da classe Gun C++.

41
00:03:06,050 --> 00:03:10,760
‫Agora, isso não será um ponteiro porque não estamos apontando para uma instância real da arma.

42
00:03:11,120 --> 00:03:15,350
‫O que estamos obtendo aqui nesta variável é uma classe em si.

43
00:03:15,590 --> 00:03:18,320
‫Nesse caso, é uma classe blueprint, mas ainda é uma classe.

44
00:03:18,950 --> 00:03:25,670
‫Então, vamos chamar isso de classe de arma, só para deixar bem claro que não é

45
00:03:25,670 --> 00:03:27,620
‫a arma em si.

46
00:03:28,160 --> 00:03:36,770
‫Queremos outra propriedade aqui para armazenar a arma e isso não será um padrão de edição.

47
00:03:36,770 --> 00:03:42,320
‫Então, basicamente, não queremos tornar isso uma propriedade visível, mas será em um ponteiro de

48
00:03:42,440 --> 00:03:43,100
‫arma.

49
00:03:43,100 --> 00:03:43,850
‫Veja a diferença?

50
00:03:43,850 --> 00:03:50,720
‫Um deles é uma subclasse t de arma, o outro é um apontador de arma e este é a arma real.

51
00:03:50,750 --> 00:03:54,470
‫Assim que criamos uma instância da classe, é onde vamos armazená-la.

52
00:03:55,040 --> 00:04:03,830
‫Então vamos para o nosso shooter c p e terminar este jogo inicial onde estamos gerando coisas, então vamos ter uma arma

53
00:04:03,830 --> 00:04:10,130
‫igual para fazer o spawn do mundo agir como uma arma e o argumento vai passar

54
00:04:10,130 --> 00:04:14,690
‫aqui é a classe da arma que vamos definir em plantas.

55
00:04:15,050 --> 00:04:17,750
‫Então vamos tentar compilar isso.

56
00:04:17,750 --> 00:04:18,860
‫Pode nos dar alguns erros.

57
00:04:18,860 --> 00:04:23,450
‫Vamos ver, eu tenho o log de mensagens aberto com o log de compilação.

58
00:04:23,450 --> 00:04:28,190
‫E com certeza, estamos recebendo alguns erros aqui no arquivo principal dizendo identificador não declarado

59
00:04:28,670 --> 00:04:31,040
‫porque precisamos encaminhar a declaração da arma.

60
00:04:31,280 --> 00:04:32,830
‫Então eu só vou fazer isso no topo.

61
00:04:32,930 --> 00:04:35,420
‫Isso é em dois lugares que eu vou dizer classe.

62
00:04:36,490 --> 00:04:39,180
‫Uma arma como a visão.

63
00:04:39,820 --> 00:04:45,040
‫E apenas um lembrete, uma declaração antecipada como essa significa que podemos manter nossos tempos de compilação baixos, não

64
00:04:45,040 --> 00:04:47,350
‫incluindo muito na cabeça pesada dos arquivos.

65
00:04:47,950 --> 00:04:49,330
‫Vamos tentar recompilar e ver.

66
00:04:49,850 --> 00:04:51,210
‫Parece que esse foi o único erro.

67
00:04:51,220 --> 00:04:52,690
‫Agora foi compilado com sucesso.

68
00:04:52,720 --> 00:04:55,840
‫Vamos em frente e aperte o play e veja o que acontece.

69
00:04:55,870 --> 00:04:56,380
‫Saída.

70
00:04:56,410 --> 00:04:57,520
‫Dê uma olhada no nosso.

71
00:04:57,850 --> 00:05:00,580
‫Basicamente, queremos dar uma olhada no carregamento de mensagens, que não tenho aberto.

72
00:05:00,850 --> 00:05:07,720
‫Então, vamos para as ferramentas de janela e desenvolvedor e dê uma olhada no log de saída e veja se temos algum erro aqui.

73
00:05:07,750 --> 00:05:08,110
‫Sim.

74
00:05:08,140 --> 00:05:10,780
‫O ator Spawn falhou porque nenhuma classe foi especificada.

75
00:05:10,810 --> 00:05:11,200
‫Certo.

76
00:05:11,230 --> 00:05:14,710
‫Nenhuma classe foi especificada porque ainda não a configuramos no blueprint.

77
00:05:14,950 --> 00:05:21,160
‫Então, isso eu vou salvar como um desafio para você conectar a arma, encontrar a propriedade em nossos projetos

78
00:05:21,160 --> 00:05:25,600
‫de personagens, configurá-la para a arma correta e testar se ela gera.

79
00:05:25,600 --> 00:05:26,650
‫Pause o vídeo e vá em frente.

80
00:05:26,710 --> 00:05:27,520
‫Ok, bem-vindo de volta.

81
00:05:27,530 --> 00:05:36,190
‫Então vamos ao nosso personagem atirador, BP, e encontrar a propriedade que deve estar na rota ou na

82
00:05:36,190 --> 00:05:37,150
‫classe.

83
00:05:37,150 --> 00:05:40,750
‫Padrões entram em detalhes e filmam um personagem.

84
00:05:40,780 --> 00:05:47,350
‫Você pode ver que temos uma rotação aqui que configuramos e temos nossa classe de arma, que é um

85
00:05:47,350 --> 00:05:52,060
‫menu suspenso que me permite escolher entre a arma ser a arma C++.

86
00:05:52,180 --> 00:05:54,250
‫E é aqui que uma convenção de nomenclatura é útil.

87
00:05:54,520 --> 00:05:57,640
‫As coisas prefixadas com sublinhado BP são as plantas.

88
00:05:57,880 --> 00:06:00,280
‫Então, queremos o rifle de sublinhado AB BP.

89
00:06:00,310 --> 00:06:05,620
‫Nós iremos em frente e selecionaremos o salvamento de compilação, iremos até a cena e apertaremos o play.

90
00:06:06,190 --> 00:06:11,680
‫Agora, espero que não tenhamos nenhum erro sobre a geração de uma arma.

91
00:06:12,070 --> 00:06:13,390
‫A arma deveria ter gerado.

92
00:06:13,390 --> 00:06:14,170
‫OK.

93
00:06:14,500 --> 00:06:20,590
‫E para descobrir se tem, podemos F8 e dar uma olhada no contorno do mundo.

94
00:06:20,650 --> 00:06:26,140
‫Se eu aumentar um pouco o contorno do mundo, posso procurar pelo rifle de sublinhado BP.

95
00:06:26,260 --> 00:06:26,890
‫Viva.

96
00:06:26,890 --> 00:06:32,320
‫Temos um rifle de sublinhado da BP no momento em que está no meio do nada e não é uma identificação infantil correta.

97
00:06:32,530 --> 00:06:34,750
‫Esse será o assunto da próxima palestra.

98
00:06:34,750 --> 00:06:36,520
‫Então eu vou te ver lá.

