﻿1
00:00:04,370 --> 00:00:05,390
‫Olá e bem-vindo.

2
00:00:05,390 --> 00:00:12,170
‫Nesta palestra, vamos estabelecer a ligação entre o motor e o gatilho usando uma técnica chamada injeção de

3
00:00:12,170 --> 00:00:18,230
‫dependência para que, no final da palestra, se colocarmos a gárgula, a porta se mova para

4
00:00:18,230 --> 00:00:20,810
‫baixo, ou pelo menos parcialmente faz.

5
00:00:20,810 --> 00:00:24,260
‫Vamos mergulhar e ver como isso funciona.

6
00:00:25,080 --> 00:00:26,460
‫E eu pego um copo.

7
00:00:26,490 --> 00:00:33,030
‫Vimos que existe uma dependência, o que chamamos de dependência para o handle físico.

8
00:00:33,030 --> 00:00:40,350
‫Este grabber não pode fazer seu trabalho a menos que você tenha um componente de alça de física em algum lugar agora, acontece

9
00:00:40,350 --> 00:00:42,960
‫que o componente de gatilho é o mesmo.

10
00:00:42,960 --> 00:00:50,100
‫O componente acionador, para fazer seu trabalho corretamente, precisa ter acesso a um componente movedor.

11
00:00:50,460 --> 00:00:57,360
‫No entanto, é um pouco mais complicado neste caso porque com certeza, no caso de nossa porta secreta,

12
00:00:57,360 --> 00:01:02,400
‫o gatilho e o objeto em movimento estão dentro do mesmo ator.

13
00:01:02,730 --> 00:01:08,220
‫Assim, você pode obter um objeto encontrando o componente a do tipo no ator.

14
00:01:08,220 --> 00:01:14,490
‫Mas e se tivermos essa situação no meu roteiro em que eu quero que meu gatilho esteja em

15
00:01:14,490 --> 00:01:20,760
‫uma parte diferente da sala do ator que está se movendo bem para permitir esse tipo de flexibilidade.

16
00:01:20,760 --> 00:01:26,940
‫Queremos que o gatilho não precise ir e encontrar suas próprias dependências.

17
00:01:26,940 --> 00:01:30,330
‫E na verdade existe um nome para esse tipo de conceito de programa.

18
00:01:30,330 --> 00:01:32,640
‫É chamado de injeção de dependência.

19
00:01:32,640 --> 00:01:37,680
‫Basicamente, é no caso em que temos algo que diz, preciso de outro objeto, mas não

20
00:01:37,680 --> 00:01:40,230
‫consigo encontrá-lo sozinho ou não quero encontrá-lo sozinho.

21
00:01:40,290 --> 00:01:47,940
‫E muitas vezes é sensato não deixar isso para o objeto que está fazendo seu próprio trabalho, fazendo com que ele tenha outro

22
00:01:47,940 --> 00:01:50,850
‫trabalho de tentar se apossar de um objeto.

23
00:01:51,300 --> 00:02:00,810
‫Então, a maneira como podemos fazer isso é criar um mecanismo para blueprints para dizer ao componente de gatilho onde

24
00:02:00,810 --> 00:02:02,730
‫encontrar um movedor.

25
00:02:02,910 --> 00:02:09,330
‫E a maneira como faremos isso é criando uma função de blueprint que pode ser chamada em nosso componente de gatilho.

26
00:02:09,810 --> 00:02:11,220
‫Então vai ser público.

27
00:02:11,220 --> 00:02:16,980
‫Vamos colocá-lo na seção pública abaixo do componente tick, e será uma

28
00:02:16,980 --> 00:02:22,710
‫função U para que possa estar entre parênteses, blueprint callable.

29
00:02:23,280 --> 00:02:26,130
‫E não precisa haver muito para esta função.

30
00:02:26,130 --> 00:02:33,330
‫Será nulo porque não precisa retornar nada, mas será definido como movedor, portanto, definirá um

31
00:02:33,330 --> 00:02:40,860
‫link para o movedor e, para definir um link para o movedor, será necessário receber um

32
00:02:40,860 --> 00:02:43,620
‫ponteiro para um componente movedor.

33
00:02:43,620 --> 00:02:51,540
‫Então essa será a sua estrela motora e podemos chamá-la de movedora assim e colocar ponto e vírgula no final

34
00:02:51,540 --> 00:02:52,440
‫dessa linha.

35
00:02:52,830 --> 00:02:55,350
‫E precisamos guardar isso em algum lugar.

36
00:02:55,350 --> 00:02:57,300
‫Então vamos criar uma nova variável privada.

37
00:02:57,300 --> 00:03:02,280
‫Não será uma nova propriedade e será apenas um ponteiro de movimento em U,

38
00:03:02,280 --> 00:03:04,530
‫que também chamaremos de movedor.

39
00:03:04,560 --> 00:03:12,900
‫Assim e o que vamos fazer é implementar esse movedor de conjunto no CPP para que ele defina um ponteiro para esse

40
00:03:12,900 --> 00:03:15,660
‫movimento, que por padrão será nulo.

41
00:03:16,050 --> 00:03:17,790
‫E temos que fazer mais uma coisa.

42
00:03:17,790 --> 00:03:20,640
‫Temos que incluir o arquivo de cabeçalho para o nosso movedor.

43
00:03:21,150 --> 00:03:26,370
‫Agora, neste caso, como o arquivo de cabeçalho está na mesma pasta que

44
00:03:26,370 --> 00:03:36,870
‫o componente do acionador, tudo o que precisamos fazer é incluir o hash do movedor H e isso garantirá que o componente do acionador esteja ciente do

45
00:03:36,870 --> 00:03:38,100
‫tipo do movedor.

46
00:03:38,280 --> 00:03:40,230
‫Então, vamos para o nosso componente de gatilho.

47
00:03:40,230 --> 00:03:46,530
‫CP E vou colocar isso abaixo do nosso componente tick que vamos implementar set mover.

48
00:03:46,530 --> 00:03:52,500
‫Vamos colocar a classe que você aciona o componente antes e indentá-lo.

49
00:03:53,400 --> 00:03:55,590
‫Remova o ponto e vírgula e adicione chaves.

50
00:03:55,590 --> 00:04:00,150
‫E essencialmente tudo o que teremos que fazer aqui, vamos alterar o nome apenas no arquivo C++.

51
00:04:00,150 --> 00:04:06,060
‫Na verdade, não importa se o nome dos parâmetros corresponde entre header e C++.

52
00:04:06,060 --> 00:04:12,540
‫Então podemos mudar aqui e dizer que o novo motor é o que está chegando para definir o motor.

53
00:04:12,630 --> 00:04:20,010
‫E assim podemos definir nossa variável local, nossa variável de classe mover igual ao novo motor like.

54
00:04:20,010 --> 00:04:27,030
‫Então agora é realmente muito importante que você não pule esta etapa de renomeação porque se o parâmetro de

55
00:04:27,030 --> 00:04:34,170
‫entrada for o mesmo nome de uma das variáveis na classe, então unreal por padrão definirá isso como um erro.

56
00:04:34,170 --> 00:04:39,720
‫É chamado de sombreamento e o Unreal não quer que você faça isso, então você precisa ter certeza de ter

57
00:04:39,720 --> 00:04:44,970
‫o nome do seu parâmetro diferente da variável agora porque essas novas funções nem sempre aparecem com alterações

58
00:04:44,970 --> 00:04:46,260
‫de codificação ao vivo.

59
00:04:46,260 --> 00:04:52,290
‫Vou fechar a recompilação do editor do código do Visual Studio e, em seguida, reiniciar a partir do novo

60
00:04:52,290 --> 00:04:52,920
‫projeto.

61
00:04:52,950 --> 00:04:58,950
‫Agora vamos para a gaveta de conteúdo, abra nosso plano de parede secreta e, em

62
00:04:58,950 --> 00:05:06,080
‫seguida, do nosso nó Begin Play no gráfico de eventos, vamos sair daqui e procurar por set mover.

63
00:05:06,090 --> 00:05:08,190
‫Agora observe que há duas opções aqui.

64
00:05:08,190 --> 00:05:15,210
‫Um, seria definir o componente que também é chamado de movedor, e o outro é uma função no componente de

65
00:05:15,210 --> 00:05:15,750
‫disparo.

66
00:05:15,750 --> 00:05:18,840
‫Então, queremos selecionar aquela que é uma função no componente trigger.

67
00:05:19,050 --> 00:05:27,120
‫E então o que queremos fazer é arrastar nosso componente movedor como os outros argumentos para esta função e isso

68
00:05:27,120 --> 00:05:28,110
‫deve funcionar.

69
00:05:28,110 --> 00:05:31,350
‫É definido o motor no início do jogo.

70
00:05:31,350 --> 00:05:37,800
‫Então, agora, essencialmente, o que queremos que aconteça é que nosso componente de gatilho deve estar

71
00:05:37,800 --> 00:05:41,400
‫definindo e definindo o deve mover booleano aqui.

72
00:05:41,400 --> 00:05:46,110
‫Então, esse será meu desafio para você criar algumas funções públicas em mover e mover.

73
00:05:46,110 --> 00:05:51,780
‫CP Deve ser definido, deve mover e deve atualizar essa variável de propriedade.

74
00:05:51,780 --> 00:05:56,970
‫Na verdade, você pode fazer com que não seja mais uma nova propriedade porque vamos defini-la por meio de

75
00:05:56,970 --> 00:05:59,760
‫código agora e então você pode colocá-la na seção pública.

76
00:05:59,760 --> 00:06:04,740
‫Ele precisa ser público porque vamos tentar acessá-lo do nosso componente de gatilho.

77
00:06:04,740 --> 00:06:11,850
‫E você pode chamá-lo no ponteiro do movedor que temos no componente acionador da configuração do componente

78
00:06:11,850 --> 00:06:17,970
‫de marcação, o booleano apropriado, se queremos desbloquear ou bloquear novamente, pausar o vídeo

79
00:06:17,970 --> 00:06:18,960
‫e tentar.

80
00:06:22,250 --> 00:06:23,690
‫Ok bem vindo de volta.

81
00:06:23,690 --> 00:06:29,410
‫Então eu vou remover a propriedade de should move Vou para

82
00:06:29,420 --> 00:06:39,800
‫a seção pública logo abaixo do componente TTIC e vou criar um conjunto void should move levando um booleano que

83
00:06:39,800 --> 00:06:43,010
‫vamos chamar should mova-se assim.

84
00:06:43,280 --> 00:06:51,560
‫E então vamos pegar isso e ir para o move CP e implementá-lo, substituindo o ponto e

85
00:06:51,560 --> 00:07:00,920
‫vírgula, adicionando a classe you move dois pontos, dois pontos e, basicamente, novamente podemos chamar isso de novo deve mover

86
00:07:00,920 --> 00:07:08,030
‫e podemos dizer que deve se mover é igual a novo deve se mover.

87
00:07:08,030 --> 00:07:12,860
‫Agora você pode estar se perguntando, por que não tornamos as próprias variáveis publicamente acessíveis

88
00:07:12,860 --> 00:07:14,660
‫para que possamos defini-las diretamente?

89
00:07:14,780 --> 00:07:22,520
‫Isso geralmente não é uma boa prática em C++ porque se você deixar alguém alterar suas variáveis, você nunca saberá o que

90
00:07:22,520 --> 00:07:24,620
‫pode estar acontecendo com eles.

91
00:07:24,620 --> 00:07:32,090
‫Considerando que, se você tiver um método para fazer isso por você, ele permitirá que você altere mais tarde como estrutura as

92
00:07:32,090 --> 00:07:38,240
‫variáveis internas sem precisar alterar suas funções públicas, o que significa que há menos atualizações para diferentes classes

93
00:07:38,240 --> 00:07:39,920
‫que você precisa fazer.

94
00:07:39,920 --> 00:07:46,070
‫Então, geralmente, como regra, sempre usamos setters e getters se precisarmos acessar variáveis em outras

95
00:07:46,070 --> 00:07:46,850
‫classes.

96
00:07:46,850 --> 00:07:52,100
‫Agora que criamos essa nova função, vamos para o componente trigonométrico CP, onde atualmente temos

97
00:07:52,100 --> 00:07:53,570
‫nossas mensagens de log.

98
00:07:53,570 --> 00:08:01,670
‫O que queremos fazer é acessar nosso ponteiro de movimento, então vamos fazer o conjunto de seta do motor deve se mover.

99
00:08:01,670 --> 00:08:06,140
‫E no caso de termos um ator aceitável, isso deve ser verdade.

100
00:08:06,140 --> 00:08:08,600
‫Devemos mover o ponto e vírgula no final da linha.

101
00:08:08,690 --> 00:08:12,200
‫E no caso contrário, bem, então provavelmente não deveríamos.

102
00:08:12,200 --> 00:08:20,510
‫Então vamos mover o conjunto de setas deve mover e entre parênteses colocar false remover aquele R extra que eu tinha no

103
00:08:20,510 --> 00:08:26,780
‫final do meu método e vamos recompilar agora neste caso porque eu só adicionei essa função no

104
00:08:26,780 --> 00:08:30,020
‫terreno C++ e não é chamado de blueprint.

105
00:08:30,020 --> 00:08:34,940
‫Eu não acho que eu realmente precise reiniciar o editor para esta funcionalidade funcionar, fechar nosso log

106
00:08:34,940 --> 00:08:39,530
‫de saída, ir em direção a nossa gárgula e começar a jogar e pegá-lo.

107
00:08:39,770 --> 00:08:49,400
‫Vamos sair desta gaiola e enfiá-la na alcova e eles vão, está descendo, mas para assim que a gárgula cai, o

108
00:08:49,400 --> 00:08:56,600
‫que não é o ideal porque a gárgula não está realmente no lugar e a parede

109
00:08:56,600 --> 00:08:59,060
‫não está totalmente para baixo.

110
00:08:59,150 --> 00:09:03,020
‫E porque está simulando física, vai sair daquela alcova, não é?

111
00:09:03,020 --> 00:09:10,580
‫Então, o que precisamos fazer é ter certeza de que, uma vez que o soltamos em nossa área de gatilho, ele seja consertado

112
00:09:10,580 --> 00:09:11,780
‫lá e permaneça.

113
00:09:11,780 --> 00:09:14,210
‫Então esse será o assunto da próxima palestra.

114
00:09:14,210 --> 00:09:15,200
‫Eu te vejo lá.

