﻿1
00:00:04,430 --> 00:00:05,660
‫Olá e bem-vindo.

2
00:00:05,660 --> 00:00:11,810
‫Nesta palestra, veremos vetores e, em geral, coisas mais complicadas, como structs

3
00:00:11,810 --> 00:00:19,610
‫em C++ e como podemos acessar as partes individuais de um conjunto e obtê-las de um struct.

4
00:00:19,790 --> 00:00:20,420
‫Vamos mergulhar.

5
00:00:21,320 --> 00:00:27,770
‫Então aprendemos como lidar com tipos de dados básicos em C++ e criar variáveis e atribuir a elas e até mesmo

6
00:00:27,770 --> 00:00:29,630
‫fazer algumas aritméticas básicas com elas.

7
00:00:29,990 --> 00:00:35,330
‫Mas e se quiséssemos lidar com tipos mais complicados, como vetores e transformadas?

8
00:00:35,930 --> 00:00:38,030
‫Bem, o processo é realmente muito semelhante.

9
00:00:38,030 --> 00:00:41,600
‫Vamos começar limpando alguns dos códigos de teste que já temos.

10
00:00:41,600 --> 00:00:43,550
‫Vou deletar todas as minhas propriedades.

11
00:00:43,550 --> 00:00:46,460
‫Para mim, essa é a linha 26 até 51.

12
00:00:47,030 --> 00:00:54,290
‫E também vou entrar no arquivo C++ e excluir as linhas 19 a 23, que é onde estou fazendo todo o trabalho

13
00:00:54,290 --> 00:00:56,870
‫com as variáveis que acabei de excluir.

14
00:00:56,870 --> 00:01:01,550
‫Então agora Begin Play está completamente vazio e estamos de volta à estaca zero.

15
00:01:02,660 --> 00:01:06,290
‫Então agora o que eu quero fazer é adicionar uma nova propriedade você.

16
00:01:06,290 --> 00:01:15,980
‫Então, todas as letras maiúsculas novamente editem em qualquer lugar e eu vou dar a isso o tipo de vetor F, observe a capitalização F maiúsculo,

17
00:01:15,980 --> 00:01:22,250
‫V maiúsculo e é assim que lidamos com os vetores com os quais lidamos no Blueprint são

18
00:01:22,250 --> 00:01:27,410
‫os mesmos vetores sob o superfície, mas é assim que digitamos em C++.

19
00:01:27,410 --> 00:01:33,680
‫O F que o precede apenas nos permite saber que esta é uma estrutura da mesma forma que o A que precede

20
00:01:33,680 --> 00:01:34,580
‫a plataforma móvel.

21
00:01:34,580 --> 00:01:36,800
‫Deixa-nos saber que isso é um ator.

22
00:01:37,040 --> 00:01:38,360
‫Isso não é coisa de C++.

23
00:01:38,360 --> 00:01:43,970
‫Essa é uma convenção de nomenclatura irreal para nomear as diferentes classes, estruturas e tipos.

24
00:01:44,720 --> 00:01:47,240
‫Então o que vamos fazer é dar o nome a essa variável.

25
00:01:47,240 --> 00:01:50,840
‫E isso funciona exatamente da mesma forma como se fosse um float ou um evento.

26
00:01:51,170 --> 00:01:53,540
‫Podemos chamá-lo de meu float, por exemplo.

27
00:01:53,540 --> 00:01:54,770
‫Ele precisa não ter espaços.

28
00:01:55,280 --> 00:01:59,060
‫E se colocarmos ponto e vírgula no final da linha aqui, é isso.

29
00:01:59,060 --> 00:02:06,110
‫Declaramos uma nova variável que ficará visível em nosso painel de detalhes no editor, mas isso não é suficiente

30
00:02:06,110 --> 00:02:07,040
‫para mim.

31
00:02:07,040 --> 00:02:13,760
‫Eu gostaria realmente de dar a isso um valor padrão diferente do padrão 000.

32
00:02:14,150 --> 00:02:17,630
‫Para isso, precisamos atualizar nosso glossário com um novo termo.

33
00:02:17,630 --> 00:02:24,830
‫Precisamos de um construtor, que é essencialmente algo em C++ que cria um novo valor de struct ou classe A.

34
00:02:25,280 --> 00:02:33,050
‫Então, se tivéssemos que criar um construtor para o vetor, a maneira como isso funcionaria é que queremos atribuir um valor para

35
00:02:33,050 --> 00:02:34,640
‫que chegássemos a igual.

36
00:02:34,640 --> 00:02:40,520
‫E normalmente quando estávamos lidando com inteiros ou floats, podíamos usar algo como um ou um

37
00:02:40,520 --> 00:02:46,040
‫true que foram construídos em valores que nos permitiram definir o valor desses tipos básicos.

38
00:02:46,400 --> 00:02:53,090
‫Mas quando temos tipos mais elaborados como um struct, precisamos usar o construtor e o construtor sempre terá

39
00:02:53,090 --> 00:02:59,120
‫o mesmo nome que o tipo de dados, então será escrito exatamente da mesma forma.

40
00:02:59,450 --> 00:03:05,870
‫E então você abre alguns parênteses e dentro dos parênteses você dá os valores que você quer.

41
00:03:05,870 --> 00:03:08,570
‫Então X, Y e Z é o que compõe um vetor.

42
00:03:08,570 --> 00:03:14,990
‫Então poderíamos ter um, dois e três separados por vírgulas, e então fechamos os parênteses e colocamos ponto e

43
00:03:14,990 --> 00:03:16,760
‫vírgula no final da linha.

44
00:03:17,090 --> 00:03:23,420
‫E isso dará um valor padrão de um, dois e três no X, Y e Z para este vetor.

45
00:03:23,420 --> 00:03:24,290
‫Vamos experimentá-lo.

46
00:03:24,680 --> 00:03:27,200
‫Volte para o Unreal e aperte o botão de compilação.

47
00:03:27,680 --> 00:03:34,520
‫E quando isso for concluído com sucesso, podemos ter certeza de que selecionamos o Moving Platform Act em nosso esboço e dar

48
00:03:34,520 --> 00:03:40,010
‫uma olhada no painel de detalhes e ver que, de fato, temos uma nova propriedade chamada

49
00:03:40,010 --> 00:03:40,700
‫My Float.

50
00:03:40,700 --> 00:03:47,180
‫Os outros foram retirados e os valores em suas diferentes posições, X, Y e Z são um,

51
00:03:47,180 --> 00:03:49,430
‫dois e três como esperávamos.

52
00:03:50,180 --> 00:03:51,050
‫Então isso é ótimo.

53
00:03:51,200 --> 00:03:57,560
‫Mas e se eu quisesse me apoderar desses valores e colá-los talvez em outra propriedade?

54
00:03:57,710 --> 00:04:04,010
‫Então, se eu tiver outra propriedade marcada como adicionada em qualquer lugar para que eu

55
00:04:04,580 --> 00:04:12,860
‫possa vê-la no inspetor, digite float chamado meu x e o padrão será zero apenas para que possamos ver que estamos alterando.

56
00:04:13,730 --> 00:04:20,690
‫E o que eu quero fazer é pegar o valor x do meu float em begin play e quero defini-lo

57
00:04:20,690 --> 00:04:22,130
‫na variável my x.

58
00:04:22,610 --> 00:04:30,320
‫Então, vamos para o arquivo C++ e, no início do jogo, após a linha que diz super grande em jogo,

59
00:04:30,320 --> 00:04:37,970
‫vamos definir meu X igual ao que queremos obter algo do meu vetor, mas não queremos o todo do meu

60
00:04:37,970 --> 00:04:38,570
‫vetor.

61
00:04:38,570 --> 00:04:39,800
‫Isso seria um erro.

62
00:04:39,800 --> 00:04:44,570
‫Não podemos definir um vetor em um float, queremos apenas a parte x desse vetor.

63
00:04:45,050 --> 00:04:48,620
‫Bem, para entender isso, precisamos entender o conceito de operador.

64
00:04:48,740 --> 00:04:53,030
‫Operadores são símbolos em C++ que fazem alguma coisa.

65
00:04:53,030 --> 00:04:54,410
‫Já vimos alguns.

66
00:04:54,650 --> 00:04:57,890
‫Vimos o operador mais, que soma duas coisas.

67
00:04:57,890 --> 00:04:59,450
‫Há também um operador de menos.

68
00:04:59,450 --> 00:05:03,770
‫Há o operador de igualdade, o operador de igual, que atribui.

69
00:05:03,890 --> 00:05:04,270
‫Coisas.

70
00:05:04,270 --> 00:05:06,710
‫Então, estamos usando isso aqui na linha 19.

71
00:05:06,710 --> 00:05:11,750
‫Esse é um operador que está atribuindo o valor do meu vetor ao meu X.

72
00:05:12,350 --> 00:05:18,620
‫E então temos mais um operador, que precisamos saber qual é o operador DOT.

73
00:05:18,980 --> 00:05:23,300
‫É um operador que obtém algo de dentro de uma estrutura ou classe.

74
00:05:23,390 --> 00:05:27,200
‫Então, queremos obter o X de dentro do meu vetor.

75
00:05:27,200 --> 00:05:33,860
‫Então usamos um operador de ponto, fazemos x agora não usamos um espaço aqui entre o meu vetor e o x.

76
00:05:34,130 --> 00:05:40,400
‫Nós apenas deixamos essas corridas juntas assim é como normalmente deixamos as coisas, mesmo que não seja necessariamente

77
00:05:40,400 --> 00:05:41,930
‫um erro colocar espaços.

78
00:05:42,350 --> 00:05:51,260
‫Então temos meu vetor ponto x deve pegar o valor x do vetor e colocá-lo no meu x float.

79
00:05:51,710 --> 00:05:57,470
‫Então, colocamos ponto e vírgula no final da linha e, como sempre, estou ignorando os rabiscos vermelhos porque às vezes eles

80
00:05:57,470 --> 00:06:00,290
‫demoram muito para atualizar e às vezes não estão corretos.

81
00:06:00,770 --> 00:06:06,530
‫E então vamos entrar na codificação ao vivo e apertar o botão que recompila e apenas verificamos

82
00:06:06,530 --> 00:06:08,300
‫se obtivemos um resultado bem-sucedido.

83
00:06:08,750 --> 00:06:11,060
‫E não, você vê, nós temos uma falha de construção.

84
00:06:11,060 --> 00:06:16,760
‫E se você olhar para o erro dizendo que meu vetor é um identificador não declarado e isso é porque eu cometi um

85
00:06:16,760 --> 00:06:21,620
‫erro de digitação, chamei o vetor F de meu float e você provavelmente está gritando com suas telas.

86
00:06:21,620 --> 00:06:26,150
‫Mas é bom mostrar que mesmo os especialistas, os programadores cometem erros.

87
00:06:26,150 --> 00:06:30,710
‫Queríamos chamar isso de meu vetor, então vou voltar ao arquivo principal

88
00:06:30,950 --> 00:06:35,540
‫e renomeá-lo para meu vetor, o que deve remover o problema no meu cérebro.

89
00:06:35,720 --> 00:06:38,660
‫Vamos em frente e clique no botão compilar novamente.

90
00:06:38,960 --> 00:06:44,130
‫E isso apenas lhe dá um gostinho de como é quando você comete erros, você recebe um erro de compilação.

91
00:06:44,130 --> 00:06:45,230
‫Isso acontece o tempo todo.

92
00:06:45,230 --> 00:06:48,230
‫Na verdade, é muito raro não cometer erros.

93
00:06:48,230 --> 00:06:54,740
‫A primeira vez que você fizer algo, então vamos em frente e apertar play e vamos ver o valor que obtemos

94
00:06:54,770 --> 00:06:56,270
‫no painel de detalhes.

95
00:06:56,270 --> 00:07:05,000
‫Você pode ver agora que meu x foi definido como um porque esse era o valor no componente x da variável de meu

96
00:07:05,000 --> 00:07:05,720
‫vetor.

97
00:07:06,170 --> 00:07:09,740
‫Então, eu gostaria de desafiá-lo a definir um valor vetorial.

98
00:07:09,740 --> 00:07:11,870
‫Estamos obtendo valores do vetor.

99
00:07:11,870 --> 00:07:13,010
‫Agora vamos tentar configurá-los.

100
00:07:13,010 --> 00:07:17,000
‫Basicamente, tente usar o operador ponto para definir um valor.

101
00:07:17,420 --> 00:07:25,760
‫Tente inverter os dois lados desse igual para que tenhamos o meu X à direita e o meu vetor

102
00:07:25,760 --> 00:07:26,840
‫à esquerda.

103
00:07:27,140 --> 00:07:30,260
‫E se você mudar para Y ou z?

104
00:07:30,500 --> 00:07:33,260
‫Existe alguma diferença que puxa vídeo e ter uma chance?

105
00:07:36,740 --> 00:07:37,390
‫OK.

106
00:07:37,400 --> 00:07:37,900
‫Bem vindo de volta.

107
00:07:37,910 --> 00:07:40,580
‫Então eu vou tentar virar esses dois ao redor.

108
00:07:40,580 --> 00:07:44,930
‫Vamos para o C++ e começar a jogar.

109
00:07:44,930 --> 00:07:52,730
‫O que vou dizer é que meu vetor ponto y é igual ao meu x e depois coloco ponto e vírgula no final da linha.

110
00:07:52,970 --> 00:07:57,530
‫E é assim que podemos definir valores dentro de uma estrutura também.

111
00:07:57,920 --> 00:08:06,920
‫Então, vamos voltar ao Unreal e recompilar e então podemos seguir em frente e definir algum valor no meu X.

112
00:08:06,920 --> 00:08:08,690
‫Vou colocar o valor de cinco aqui.

113
00:08:10,070 --> 00:08:15,410
‫Então vou jogar e dar uma olhada no painel de detalhes da plataforma móvel.

114
00:08:15,740 --> 00:08:24,320
‫E com certeza, o valor y do meu vetor foi atualizado no início da reprodução pelo valor no meu x.

115
00:08:24,860 --> 00:08:26,000
‫Então parabéns.

116
00:08:26,000 --> 00:08:33,020
‫Vimos como usar tipos mais complicados, os tipos compostos como structs em C++.

117
00:08:33,020 --> 00:08:34,640
‫Vejo você na próxima palestra.

