﻿1
00:00:04,370 --> 00:00:05,210
‫Olá e bem-vindo.

2
00:00:05,210 --> 00:00:10,250
‫Nesta palestra, vamos investigar o conceito de variáveis locais, variáveis que só existem dentro

3
00:00:10,250 --> 00:00:11,750
‫de uma determinada função.

4
00:00:12,080 --> 00:00:19,970
‫E vamos ver como podemos usar isso para definir nossa localização para um valor diferente daquele armazenado

5
00:00:19,970 --> 00:00:21,380
‫no meu vetor.

6
00:00:21,530 --> 00:00:22,190
‫Vamos mergulhar.

7
00:00:22,730 --> 00:00:28,340
‫Então, até este ponto, temos lidado com variáveis que pertencem a uma classe.

8
00:00:28,580 --> 00:00:31,520
‫Fizemos isso no Blueprint e agora em C++.

9
00:00:31,910 --> 00:00:37,130
‫E isso significa que a variável está viva enquanto a instância da classe.

10
00:00:37,130 --> 00:00:43,190
‫Cada instância obtém sua própria cópia de uma variável, mas enquanto a instância de classe está ativa, a variável é

11
00:00:43,190 --> 00:00:43,820
‫dois.

12
00:00:44,030 --> 00:00:47,660
‫Agora, esse conceito sobre o qual acabei de falar tem um nome.

13
00:00:47,660 --> 00:00:48,830
‫Chama-se Escopo.

14
00:00:49,430 --> 00:00:52,640
‫O que significa é quanto tempo a variável vive?

15
00:00:52,640 --> 00:00:59,450
‫E acabei de descrever uma variável de instância que é uma variável que vive tanto quanto uma instância específica de

16
00:00:59,450 --> 00:01:00,470
‫uma classe.

17
00:01:00,950 --> 00:01:03,830
‫Agora existem outros tipos de variáveis também.

18
00:01:03,830 --> 00:01:07,430
‫Existem variáveis que vivem tanto quanto uma função.

19
00:01:07,430 --> 00:01:13,160
‫Basicamente, quando você chama uma função específica, essa função é executada e assim que a função

20
00:01:13,160 --> 00:01:14,720
‫termina, a variável morre.

21
00:01:15,200 --> 00:01:23,660
‫Assim, em C++, em geral, uma variável é válida entre as chaves na sintaxe.

22
00:01:23,660 --> 00:01:25,470
‫Então é uma boa regra.

23
00:01:25,470 --> 00:01:31,460
‫Nem sempre é exatamente correto, mas a função tick, por exemplo, temos

24
00:01:31,460 --> 00:01:39,710
‫algumas chaves aqui e se fôssemos declarar uma variável dentro dessa função tick, ela existiria apenas uma vez.

25
00:01:39,710 --> 00:01:43,820
‫A função tick é chamada e na próxima vez ela será criada novamente.

26
00:01:44,480 --> 00:01:45,950
‫A plataforma móvel.

27
00:01:45,980 --> 00:01:52,130
‫Se pudermos ver isso, se dermos uma olhada na plataforma móvel dot h, você verá que o vetor my

28
00:01:52,130 --> 00:01:59,540
‫está sendo declarado dentro de algumas chaves que pertencem à definição da classe, e é por isso que essas variáveis vivem por tanto

29
00:01:59,540 --> 00:02:02,210
‫tempo quanto um instância da classe faz.

30
00:02:02,420 --> 00:02:04,580
‫Então eu gostaria de provar isso para você.

31
00:02:04,580 --> 00:02:11,060
‫Então vamos para a plataforma móvel dot CP e vamos criar uma variável local dentro dela.

32
00:02:11,240 --> 00:02:14,870
‫Então, vou criá-lo exatamente da mesma maneira que fizemos.

33
00:02:15,110 --> 00:02:20,840
‫Quando estamos declarando erro no cabeçalho do arquivo, vamos ter um vetor F, então o nome do vetor,

34
00:02:20,840 --> 00:02:22,850
‫vou chamá-lo de vetor local.

35
00:02:23,810 --> 00:02:27,920
‫E então podemos definir isso como um valor quando o criamos.

36
00:02:28,190 --> 00:02:32,810
‫Podemos fazer isso usando o construtor para o vetor F, ou podemos fazê-lo a partir de outra variável,

37
00:02:32,930 --> 00:02:35,510
‫assim como podemos passar uma variável para uma função.

38
00:02:35,510 --> 00:02:38,810
‫Portanto, podemos, em primeiro lugar, usar apenas o método construtor.

39
00:02:38,810 --> 00:02:45,410
‫Então nós vamos ter o vetor F e eu vou dar um 1 a 3 e depois um ponto e vírgula, o fim

40
00:02:45,410 --> 00:02:46,010
‫da linha.

41
00:02:46,010 --> 00:02:48,160
‫Então agora é uma variável local.

42
00:02:48,170 --> 00:02:54,830
‫Ele só existe dentro desta função e é redefinido toda vez que a função é chamada.

43
00:02:55,190 --> 00:03:01,190
‫Então, se eu fosse fazer algo assim, se eu fosse fazer algo como temos na

44
00:03:01,190 --> 00:03:09,350
‫linha 29 com o meu vetor sendo atualizado, podemos ter um vetor local, podemos ter um vetor local ponto z igual

45
00:03:09,350 --> 00:03:12,470
‫ao vetor local ponto z mais um.

46
00:03:13,040 --> 00:03:22,010
‫E se eu definir minha localização para esse vetor local, será o mesmo em todos os quadros porque

47
00:03:22,010 --> 00:03:26,180
‫redefinimos e começamos a partir do mesmo local.

48
00:03:26,180 --> 00:03:28,880
‫Um, dois, três, cada função de carrapato.

49
00:03:28,880 --> 00:03:31,520
‫Portanto, esta função realmente só existe localmente.

50
00:03:31,670 --> 00:03:38,810
‫Então eu gostaria que você tentasse um pequeno experimento como seu desafio para definir o vetor local do meu vetor.

51
00:03:38,810 --> 00:03:43,550
‫Então você vai basicamente fazer em vez de configurá-lo a partir do construtor, você vai defini-lo

52
00:03:43,550 --> 00:03:49,460
‫a partir do valor que está atualmente no meu vetor que vai levar uma cópia desse vetor para o seu vetor

53
00:03:49,460 --> 00:03:49,940
‫local.

54
00:03:50,570 --> 00:03:54,320
‫Então eu gostaria que você defina em um local usando o vetor local.

55
00:03:54,650 --> 00:04:00,350
‫E como estamos tentando atualizar esse vetor local a cada quadro, vamos ver qual é o efeito.

56
00:04:00,350 --> 00:04:01,580
‫A plataforma se move?

57
00:04:01,580 --> 00:04:07,850
‫Você esperaria que isso acontecesse e testá-lo, compilar o código e ver se ele realmente publica o vídeo

58
00:04:07,850 --> 00:04:08,870
‫e tenta.

59
00:04:11,950 --> 00:04:12,580
‫OK.

60
00:04:12,580 --> 00:04:13,570
‫Bem vindo de volta.

61
00:04:13,600 --> 00:04:19,480
‫Então, em vez de usar o construtor aqui para definir o vetor local, vou

62
00:04:19,510 --> 00:04:20,920
‫definir meu vetor.

63
00:04:21,220 --> 00:04:28,330
‫Então estamos pegando o valor que está atualmente armazenado no meu vetor e estamos colocando-o no vetor

64
00:04:28,900 --> 00:04:32,800
‫local e então estamos atualizando o vetor local.

65
00:04:32,800 --> 00:04:36,520
‫Estamos aumentando, dito isso, em um a cada quadro.

66
00:04:36,850 --> 00:04:40,930
‫E então eu gostaria de definir o local ativo em vez do meu vetor.

67
00:04:40,930 --> 00:04:44,770
‫Em vez disso, vamos defini-lo a partir do vetor local.

68
00:04:45,580 --> 00:04:48,880
‫Agora, o que vai acontecer neste caso, você acha?

69
00:04:48,910 --> 00:04:50,980
‫Vamos em frente e descobrir.

70
00:04:50,980 --> 00:04:56,590
‫Eu vou apertar o botão compilar e ir em frente e apertar play e vou

71
00:04:56,590 --> 00:05:03,100
‫ver que a plataforma ainda está se movendo para a direita, mas não está subindo na direção Z.

72
00:05:03,100 --> 00:05:09,460
‫Então você pode ver que isso não está realmente tendo um impacto, o aumento do vetor local porque

73
00:05:09,760 --> 00:05:14,380
‫está sendo redefinido do valor atual no meu vetor, a cada quadro.

74
00:05:14,830 --> 00:05:17,320
‫Meu vetor, no entanto, ainda está sendo atualizado.

75
00:05:17,320 --> 00:05:19,780
‫A cada quadro o valor de y está sendo aumentado, a cada quadro.

76
00:05:19,780 --> 00:05:22,630
‫E é por isso que estamos vendo o movimento para a direita.

77
00:05:22,900 --> 00:05:31,540
‫Então, uma maneira de vermos que essa mudança para o vetor local é apenas local é aumentando esse valor de

78
00:05:31,540 --> 00:05:33,610
‫um para talvez 100.

79
00:05:33,820 --> 00:05:38,350
‫Então estamos adicionando 100 ao valor do vetor local.

80
00:05:38,800 --> 00:05:42,280
‫Podemos ir e compilar e depois apertar play.

81
00:05:42,850 --> 00:05:47,680
‫E o que você vai ver é que a plataforma está 100 unidades mais alta no ar.

82
00:05:47,680 --> 00:05:55,600
‫Vamos dar um segundo aqui e ejetar com F8 e pausar o jogo com o botão de pausa na barra de ferramentas

83
00:05:55,600 --> 00:06:01,750
‫principal e, em seguida, selecionar uma plataforma móvel para dar uma olhada no painel de detalhes.

84
00:06:01,750 --> 00:06:06,340
‫Para fazer isso, estou tendo que clicar nele na janela de visualização, por algum motivo às vezes não funciona apenas

85
00:06:06,340 --> 00:06:07,510
‫clicando nele no contorno.

86
00:06:07,510 --> 00:06:17,380
‫M E eu gostaria de salientar a você que o valor no meu vetor, o valor Z no meu vetor é

87
00:06:17,380 --> 00:06:21,790
‫100 unidades menor que a localização Z da transformação.

88
00:06:22,090 --> 00:06:26,970
‫Então você pode ver que adicionar a esse vetor local teve um impacto.

89
00:06:26,980 --> 00:06:34,120
‫Temos nossa localização 100 unidades acima da localização no vetor my.

90
00:06:34,150 --> 00:06:39,280
‫E o que é realmente ótimo sobre variáveis locais é que quando a função termina sua execução

91
00:06:39,280 --> 00:06:41,440
‫específica, elas são limpas e redefinidas.

92
00:06:41,440 --> 00:06:44,230
‫Assim, você sempre pode saber o que esperar com a variável local.

93
00:06:44,500 --> 00:06:50,650
‫Você sempre sabe qual valor estará nele, ao contrário de uma variável de classe que pode ser atualizada a qualquer momento

94
00:06:50,710 --> 00:06:52,660
‫a partir de qualquer outra função.

95
00:06:52,720 --> 00:06:57,160
‫Então, vamos colocar essas variáveis locais à prova em algumas aulas.

96
00:06:57,160 --> 00:06:58,360
‫Vamos mergulhar.

