﻿1
00:00:04,380 --> 00:00:05,490
‫Olá e bem-vindo.

2
00:00:05,490 --> 00:00:11,640
‫Nesta palestra, vamos implementar nossas próprias funções de membro de classe, mover plataforma e

3
00:00:11,640 --> 00:00:12,570
‫girar plataforma.

4
00:00:12,570 --> 00:00:16,950
‫Vamos ver como podemos configurá-los para que possam receber argumentos.

5
00:00:17,280 --> 00:00:20,970
‫E isso vai nos ajudar a organizar um pouco nosso código.

6
00:00:20,970 --> 00:00:23,100
‫Vamos mergulhar e ver como isso funciona.

7
00:00:24,150 --> 00:00:29,520
‫Então, até agora, usamos as funções C++ que já foram criadas para nós.

8
00:00:29,520 --> 00:00:34,620
‫Estamos usando take-los e podemos jogar em termos de escrita de suas funcionalidades.

9
00:00:34,800 --> 00:00:38,100
‫E também estamos usando funções que outras pessoas escreveram para nós.

10
00:00:38,100 --> 00:00:40,830
‫Nós os chamamos como obter localização ativa e obter nome.

11
00:00:41,370 --> 00:00:49,080
‫Agora, como podemos criar novas funções próprias para ajudar a organizar nosso código e manter essas funções pequenas

12
00:00:49,080 --> 00:00:51,630
‫e tudo muito mais legível?

13
00:00:52,380 --> 00:00:57,930
‫Bem, já temos os blocos de construção básicos no lugar, chegando ao final da seção.

14
00:00:57,930 --> 00:01:00,300
‫Entendemos muito mais sobre a sintaxe C++.

15
00:01:00,300 --> 00:01:08,100
‫Então, o que eu quero fazer é essencialmente criar uma nova função na plataforma móvel que nos permita

16
00:01:08,550 --> 00:01:12,360
‫ter apenas entrada, digamos, chamar a plataforma móvel.

17
00:01:12,930 --> 00:01:14,160
‫Por que eu quero fazer isso?

18
00:01:14,160 --> 00:01:20,250
‫Bem, porque ser capaz de fazer uma chamada de função como esta chamada MOVE Platform, isso realmente mostra o

19
00:01:20,250 --> 00:01:22,560
‫que estamos tentando fazer no momento.

20
00:01:22,560 --> 00:01:28,380
‫Temos muitas coisas acontecendo em tecnologia e não estou totalmente claro por que estamos fazendo todas essas coisas se eu for

21
00:01:28,380 --> 00:01:34,230
‫dar uma olhada nele, se entrei em tecnologia e vi uma função que diz Move platform , bem, de repente eu

22
00:01:34,710 --> 00:01:39,570
‫tenho o contexto para o que todas essas coisas deveriam estar fazendo, e eu não preciso de um

23
00:01:39,570 --> 00:01:42,300
‫único comentário para me dizer o que está acontecendo.

24
00:01:42,510 --> 00:01:47,430
‫Isso será particularmente útil quando adicionarmos à mistura a possibilidade de girar a plataforma

25
00:01:47,430 --> 00:01:48,000
‫também.

26
00:01:48,930 --> 00:01:52,710
‫Então, como definimos funções de declaração?

27
00:01:52,710 --> 00:01:56,610
‫Bem, o aspecto da declaração é feito no cabeçalho do arquivo.

28
00:01:56,610 --> 00:02:02,100
‫É aí que basicamente dizemos que vamos ao C++, teremos uma função que se parecerá

29
00:02:02,100 --> 00:02:02,970
‫com isso.

30
00:02:03,390 --> 00:02:06,870
‫E então no C++ é onde realmente definimos a função.

31
00:02:06,870 --> 00:02:09,840
‫Damos-lhe o corpo, dizemos-lhe exactamente para C++.

32
00:02:09,840 --> 00:02:12,390
‫É assim que a função funciona.

33
00:02:13,230 --> 00:02:16,020
‫E vamos dar uma olhada em como podemos fazer isso.

34
00:02:16,470 --> 00:02:20,700
‫Temos alguns exemplos de funções e temos muito em jogo, temos tecnologia.

35
00:02:21,180 --> 00:02:28,860
‫E é um bom momento para olharmos para as diferentes seções que temos em um arquivo de cabeçalho.

36
00:02:29,070 --> 00:02:34,950
‫Temos público e protegido sendo mencionado aqui e público sendo mencionado novamente.

37
00:02:35,490 --> 00:02:36,450
‫Agora, o que isso significa?

38
00:02:36,450 --> 00:02:43,350
‫Essas palavras-chave com dois pontos no final basicamente definem uma seção de acessibilidade.

39
00:02:43,350 --> 00:02:46,200
‫Essas funções, de onde podem ser acessadas.

40
00:02:46,770 --> 00:02:51,360
‫Nós vimos mais na segurança normal.

41
00:02:51,360 --> 00:02:57,930
‫Esta é uma função que estamos chamando em um vetor F, mas estamos chamando-a de outra classe, não de dentro

42
00:02:57,960 --> 00:02:59,670
‫de um vetor F.

43
00:03:00,240 --> 00:03:04,860
‫Portanto, isso significa que a acessibilidade dessa função precisa ser pública.

44
00:03:05,040 --> 00:03:09,690
‫Agora vamos deixar de lado protegido só por um minuto porque aí fica um pouco mais complicado.

45
00:03:10,020 --> 00:03:14,130
‫Mas há outro tipo de palavra-chave que podemos usar, que é privada.

46
00:03:14,730 --> 00:03:21,210
‫Então, vou adicionar após take, vou adicionar o aviso de palavra-chave privada de que não recuo essas

47
00:03:21,210 --> 00:03:24,330
‫seções e vamos colocar dois pontos no final.

48
00:03:24,330 --> 00:03:29,040
‫E isso significa que tudo o que vem depois até a próxima seção, a próxima

49
00:03:29,040 --> 00:03:31,440
‫palavra-chave que eu coloco aqui, será privada.

50
00:03:31,860 --> 00:03:37,650
‫Então isso significa que pegamos todas essas variáveis e dissemos, Ei, nenhuma outra classe tem permissão para tocar

51
00:03:37,650 --> 00:03:37,980
‫nelas.

52
00:03:38,430 --> 00:03:42,660
‫E essa é geralmente a melhor prática que não fizemos até agora, porque eu não queria deixar as

53
00:03:42,660 --> 00:03:44,400
‫coisas um pouco confusas demais para você.

54
00:03:44,790 --> 00:03:49,320
‫Mas as variáveis nas classes geralmente devem ser da sua conta.

55
00:03:49,320 --> 00:03:55,950
‫É um dos principais inquilinos da programação orientada a objetos que deixamos as classes para gerenciar suas

56
00:03:55,950 --> 00:04:02,040
‫próprias variáveis, e só as acessamos usando funções que a classe denota como públicas.

57
00:04:03,180 --> 00:04:08,010
‫Então, o que vamos fazer aqui é adicionar mais algumas funções privadas aqui porque não

58
00:04:08,010 --> 00:04:12,090
‫queremos que algo como Move Platform seja chamado de fora da classe.

59
00:04:12,390 --> 00:04:16,320
‫Queremos que seja gerenciado por nossa própria função de tecnologia.

60
00:04:16,950 --> 00:04:20,340
‫Então, como definimos uma função privada?

61
00:04:20,340 --> 00:04:22,620
‫Bem, nós o colocamos em uma seção privada.

62
00:04:22,620 --> 00:04:24,600
‫Então, temos nossa palavra-chave privada aqui.

63
00:04:24,810 --> 00:04:31,410
‫Vou colocá-lo depois de nossas variáveis, no entanto, e começamos com o tipo de retorno.

64
00:04:31,410 --> 00:04:38,670
‫E se nossa função não retornar nada, apenas digitamos void para indicar que não há retorno saindo

65
00:04:38,670 --> 00:04:39,780
‫desta função.

66
00:04:40,530 --> 00:04:42,540
‫Em seguida, damos a ele um nome de função.

67
00:04:42,540 --> 00:04:51,110
‫Então, tivemos que mover a plataforma era o que queríamos e então damos alguns parênteses para indicar que esta é uma função que abrimos e

68
00:04:51,120 --> 00:04:56,880
‫fechamos parênteses e depois um ponto e vírgula para terminar a linha e dizer, ok, é

69
00:04:56,880 --> 00:04:57,270
‫isso.

70
00:04:57,270 --> 00:05:03,180
‫Essa é a função que quero declarar aqui no arquivo de cabeçalho e tudo o que faz.

71
00:05:03,230 --> 00:05:04,970
‫Ele diz Esta é a forma da função.

72
00:05:04,970 --> 00:05:06,020
‫Este é o retorno.

73
00:05:06,200 --> 00:05:11,630
‫Isso é o que os parâmetros são necessários e o nome e a qual classe ele pertence.

74
00:05:11,660 --> 00:05:16,250
‫Agora, para realmente dar uma implementação, temos que defini-la no arquivo C++.

75
00:05:16,250 --> 00:05:17,330
‫Então vamos lá.

76
00:05:17,870 --> 00:05:23,480
‫E no final do arquivo, fora das chaves, é aqui que fazemos.

77
00:05:23,510 --> 00:05:25,610
‫Começamos novamente com o tipo de retorno.

78
00:05:25,610 --> 00:05:31,970
‫Então isso será nulo porque estamos dentro de um arquivo C++, não estamos dentro das chaves de uma

79
00:05:31,970 --> 00:05:32,710
‫classe.

80
00:05:32,720 --> 00:05:41,330
‫Temos que usar o operador de resolução de escopo para dizer que estamos tentando definir uma função de dentro da classe de

81
00:05:41,330 --> 00:05:42,550
‫plataforma móvel.

82
00:05:42,560 --> 00:05:49,130
‫Então digitamos o nome da classe, que é uma plataforma móvel, lembrando que existe um prefixo para dizer que

83
00:05:49,130 --> 00:05:50,390
‫é um ator.

84
00:05:51,380 --> 00:05:55,940
‫Em seguida, usamos dois pontos, dois pontos, o operador de resolução de escopo e, em seguida, usamos o nome

85
00:05:55,940 --> 00:05:58,700
‫da função que estamos definindo, que é a plataforma MOVE.

86
00:05:59,420 --> 00:06:03,400
‫E então usamos o mesmo conjunto de parâmetros que usamos no arquivo de cabeçalho.

87
00:06:03,410 --> 00:06:07,700
‫Neste caso, tínhamos um conjunto vazio de parâmetros, então temos apenas os parênteses.

88
00:06:08,390 --> 00:06:15,200
‫E então, em vez de colocar um ponto e vírgula no final desta linha em uma nova linha, colocamos uma

89
00:06:15,200 --> 00:06:18,590
‫chave de abertura e uma chave de fechamento correspondente.

90
00:06:19,070 --> 00:06:24,830
‫E entre essas chaves onde colocamos o código da nossa função, fantástico.

91
00:06:24,830 --> 00:06:29,720
‫Então, o que eu quero fazer agora é tentar dizer, bem, toda essa funcionalidade que temos aqui e, na verdade,

92
00:06:29,720 --> 00:06:32,270
‫vou excluir os comentários porque não precisamos mais deles.

93
00:06:32,270 --> 00:06:38,120
‫Eles eram o pseudocódigo que usamos para implementar isso, mas agora meio que serviu ao seu propósito.

94
00:06:38,120 --> 00:06:40,160
‫Entendemos o que as linhas de código estão fazendo.

95
00:06:40,640 --> 00:06:48,860
‫Eu vou tirar tudo, menos a função de plataforma de movimentação, copiá-la e colá-la em nossa

96
00:06:48,860 --> 00:06:51,290
‫função de plataforma MOVE.

97
00:06:52,100 --> 00:06:57,710
‫Portanto, isso deve funcionar praticamente da mesma forma, porque quando entramos em tecnologia, chamamos de plataforma de movimento e

98
00:06:57,710 --> 00:06:59,510
‫ele executa o mesmo código.

99
00:06:59,510 --> 00:07:05,870
‫Exceto que agora nós o agrupamos em uma função e torna mais fácil para nós ler e potencialmente reutilizar

100
00:07:05,870 --> 00:07:06,710
‫no futuro.

101
00:07:07,250 --> 00:07:11,150
‫Mas se você fizer isso, você notará que há um problema.

102
00:07:11,930 --> 00:07:19,820
‫Estamos acessando o Delta time e esse é um parâmetro ao qual não temos mais acesso porque era um parâmetro passado para

103
00:07:19,820 --> 00:07:20,870
‫a tecnologia.

104
00:07:21,500 --> 00:07:29,600
‫Então, se queremos nos apossar disso, precisamos ter um parâmetro em nossa função.

105
00:07:30,080 --> 00:07:32,960
‫Então, quando definimos parâmetros, temos que fazer isso em dois lugares.

106
00:07:32,960 --> 00:07:37,490
‫Assim como quando definimos a função, voltamos ao arquivo de cabeçalho e entre os

107
00:07:37,820 --> 00:07:40,130
‫parênteses da nossa função da plataforma MOVE.

108
00:07:40,130 --> 00:07:45,710
‫É aqui que dizemos quais parâmetros queremos e é exatamente como definir uma variável.

109
00:07:45,710 --> 00:07:48,080
‫Você precisa dar um tipo e um nome.

110
00:07:48,080 --> 00:07:52,970
‫Então, vamos dizer que será um tipo float e podemos chamá-lo de tempo Delta.

111
00:07:52,970 --> 00:07:54,290
‫Não precisa ser o mesmo nome.

112
00:07:54,290 --> 00:07:55,010
‫Poderíamos chamar assim.

113
00:07:55,220 --> 00:07:56,630
‫Poderíamos chamar de tempo.

114
00:07:56,990 --> 00:08:03,470
‫Mas é mais fácil dar o mesmo nome porque assim fica óbvio para quem lê o que deve ser

115
00:08:03,470 --> 00:08:04,310
‫passado aqui.

116
00:08:04,520 --> 00:08:09,530
‫Em seguida, no arquivo C++, precisamos corresponder à lista de parâmetros.

117
00:08:09,530 --> 00:08:13,730
‫Então, novamente, você pode fazer isso copiando e colando ou digitando.

118
00:08:13,730 --> 00:08:18,020
‫Se você digitar, certifique-se de não cometer erros de digitação porque o compilador reclamará.

119
00:08:18,470 --> 00:08:24,680
‫Então vamos ter um float chamado Delta Time passado como um parâmetro ou definido como um parâmetro para mover

120
00:08:24,680 --> 00:08:30,740
‫a plataforma, mas na verdade não o passamos como um argumento para mover a plataforma no tick.

121
00:08:30,740 --> 00:08:34,440
‫E você verá que eu tenho uma pequena linha ondulada vermelha aqui arquivo muito, muito.

122
00:08:34,490 --> 00:08:40,700
‫Ele diz que há muito poucos argumentos na chamada da função porque eu o defini no arquivo

123
00:08:40,700 --> 00:08:46,130
‫de cabeçalho e agora no C++, além de exigir um parâmetro do tipo float.

124
00:08:46,730 --> 00:08:48,710
‫Então eu devo fornecer esse parâmetro.

125
00:08:48,710 --> 00:08:52,100
‫Então, vou me certificar de que esse é o parâmetro que estou fornecendo.

126
00:08:52,100 --> 00:08:58,520
‫O valor que estou fornecendo vem da variável Delta time ou do parâmetro Delta time do tick.

127
00:08:59,030 --> 00:09:03,890
‫Então, estamos encadeando o valor, o valor é passado para o tick, depois é passado

128
00:09:03,890 --> 00:09:11,930
‫para a plataforma de movimentação e termina em um parâmetro na função da plataforma MOVE, onde pode ser usado para executar e mover a funcionalidade

129
00:09:11,930 --> 00:09:12,800
‫da plataforma.

130
00:09:12,800 --> 00:09:18,710
‫Então eu gostaria que você criasse sua própria função de plataforma de rotação que vamos chamar do TIC.

131
00:09:19,010 --> 00:09:23,690
‫Então você vai adicioná-lo ao arquivo de cabeçalho como fizemos para nossa função de plataforma MOVE.

132
00:09:23,690 --> 00:09:26,360
‫Vamos adicioná-lo ao arquivo C++ da mesma maneira.

133
00:09:26,360 --> 00:09:33,950
‫Portanto, pegue suas dicas da maneira como fizemos para essas funções e chame-as da função tick.

134
00:09:34,250 --> 00:09:40,040
‫Certifique-se de passar no tempo Delta e de definir quaisquer parâmetros para permitir que você passe o

135
00:09:40,520 --> 00:09:45,920
‫tempo Delta e implemente o corpo da plataforma Rotate para que ela desconecte uma mensagem.

136
00:09:45,920 --> 00:09:51,350
‫Na verdade, ainda não vai rodar a plataforma, mas como um espaço reservado para garantir que isso seja realmente

137
00:09:51,350 --> 00:09:56,120
‫chamado de mensagem de log usando o log da interface do usuário sobre o qual aprendemos.

138
00:09:56,450 --> 00:09:58,160
‫Pause o vídeo e vá em frente.

139
00:10:01,630 --> 00:10:02,080
‫OK.

140
00:10:02,080 --> 00:10:02,800
‫Bem vindo de volta.

141
00:10:02,830 --> 00:10:09,070
‫Então, vamos começar no arquivo de cabeçalho e faremos basicamente o mesmo que fizemos para nossa

142
00:10:09,070 --> 00:10:10,020
‫plataforma MOVE.

143
00:10:10,030 --> 00:10:14,380
‫Vamos colocá-lo em uma seção privada para que seja acessível apenas dentro de nossa classe.

144
00:10:14,890 --> 00:10:19,720
‫Vou dar-lhe um tipo de retorno void, vamos chamá-lo de plataforma rotativa.

145
00:10:19,870 --> 00:10:21,400
‫Vamos abrir a lista de parâmetros.

146
00:10:21,400 --> 00:10:25,180
‫E nele vamos colocar um parâmetro que terá o tipo float,

147
00:10:25,180 --> 00:10:30,670
‫vamos chamá-lo de tempo Delta e fechar os parâmetros e terminar com um ponto e vírgula.

148
00:10:31,270 --> 00:10:36,280
‫Agora, a maior parte do que fazemos no arquivo C++ é exatamente o mesmo que no cabeçalho do arquivo.

149
00:10:36,280 --> 00:10:41,380
‫Então, na verdade, vou copiar esta linha, ir até o arquivo C++ e mostrar o que é diferente.

150
00:10:41,800 --> 00:10:46,990
‫Então, eu vou para uma nova linha vazia no final do arquivo, colá-la, e então o que é diferente é que aqui

151
00:10:46,990 --> 00:10:50,200
‫precisamos do operador de resolução de escopo e do nome da classe.

152
00:10:50,620 --> 00:10:57,820
‫Então vamos ter uma plataforma móvel, dois pontos, dois pontos plataforma rotativa.

153
00:10:58,360 --> 00:11:01,330
‫Então temos a lista de parâmetros e não precisamos do ponto e vírgula no final.

154
00:11:01,330 --> 00:11:06,940
‫Portanto, remova o ponto e vírgula, adicione uma nova linha e ataque as chaves em vez de uma nova linha entre

155
00:11:06,940 --> 00:11:07,900
‫essas duas chaves.

156
00:11:08,680 --> 00:11:12,010
‫Então, o que queremos fazer aqui é imprimir uma mensagem de log.

157
00:11:12,010 --> 00:11:14,920
‫Então eu vou digitar você log, aperte enter.

158
00:11:15,460 --> 00:11:17,260
‫Será apenas uma mensagem de exibição simples.

159
00:11:17,680 --> 00:11:24,190
‫E no texto vou colocar o nome da nossa plataforma.

160
00:11:24,550 --> 00:11:31,090
‫Então vai ser por cento s, então vamos digitar ponto giratório, ponto, ponto, e então eu vou

161
00:11:31,090 --> 00:11:32,530
‫passar o nome.

162
00:11:32,530 --> 00:11:37,570
‫Agora podemos colocar isso em uma variável, mas como é uma linha bem curta

163
00:11:37,600 --> 00:11:44,980
‫aqui, vou digitar star, get name e depois colocar os parênteses para que estejamos chamando essencialmente aqui chamando o get

164
00:11:44,980 --> 00:11:45,580
‫name.

165
00:11:45,580 --> 00:11:48,040
‫Essa é a expressão que se apodera da string.

166
00:11:48,370 --> 00:11:53,350
‫E então estamos convertendo esse resultado para colocar em nossa mensagem de log.

167
00:11:53,950 --> 00:12:00,010
‫Então, de todas as nossas plataformas, espero ver que a rotação seja impressa, mas isso só acontecerá se eu realmente

168
00:12:00,010 --> 00:12:01,360
‫chamar isso de tecnologia.

169
00:12:01,360 --> 00:12:09,130
‫Então vamos para a função tick depois que a plataforma MOVE pode adicionar uma nova linha e chamar a plataforma de rotação.

170
00:12:09,730 --> 00:12:11,290
‫E precisamos ver.

171
00:12:11,290 --> 00:12:16,840
‫Quando abro os parênteses, isso me dá uma dica de que preciso passar um argumento para o tempo Delta.

172
00:12:16,840 --> 00:12:21,340
‫Então, novamente, vamos passar a mesma variável de tempo Delta daqui.

173
00:12:21,490 --> 00:12:24,790
‫E como eu disse, os nomes aqui não precisam ser os mesmos.

174
00:12:24,790 --> 00:12:28,480
‫Portanto, esse tempo delta precisa corresponder ao tempo Delta dentro da tecnologia.

175
00:12:29,080 --> 00:12:34,330
‫Mas podemos optar por chamar a variável dentro da data da plataforma de rotação.

176
00:12:34,330 --> 00:12:39,520
‫E em qualquer lugar que o usemos na plataforma de rotação, teríamos que usar ADT, o nome do parâmetro, e

177
00:12:39,520 --> 00:12:41,380
‫o argumento pode ser basicamente diferente.

178
00:12:41,470 --> 00:12:46,840
‫Então, vamos pular para o Unreal e clicar em compilar porque fizemos algumas alterações no arquivo de cabeçalho.

179
00:12:46,840 --> 00:12:52,930
‫A compilação será um pouco mais longa do que quando acabamos de alterar o arquivo C++ e, uma vez concluída

180
00:12:52,930 --> 00:12:57,580
‫a compilação, vamos em frente e clicar em play e abrir o log de saída.

181
00:12:58,030 --> 00:13:04,000
‫E você pode ver que de fato estamos exibindo mensagens de log sobre cada uma das plataformas rotativas.

182
00:13:04,000 --> 00:13:08,590
‫Portanto, parece que nossa função está efetivamente sendo chamada em tecnologia.

183
00:13:09,070 --> 00:13:09,580
‫Coisas boas.

184
00:13:09,580 --> 00:13:14,830
‫Agora entendemos como criar nossas próprias funções que são membros de uma classe.

185
00:13:15,280 --> 00:13:21,250
‫É uma ferramenta muito útil para reutilizar um código, mas também para organizá-lo como no Blueprint.

186
00:13:21,760 --> 00:13:23,470
‫Vejo você na próxima palestra.

