﻿1
00:00:03,980 --> 00:00:05,150
‫Olá e bem-vindo.

2
00:00:05,150 --> 00:00:11,810
‫Nesta palestra, vamos pegar nossa bagunça de blueprints e organizá-la ordenadamente em funções para que possamos

3
00:00:11,810 --> 00:00:17,600
‫ler e entender facilmente o que está acontecendo em nosso gráfico Blueprint Event.

4
00:00:17,870 --> 00:00:19,550
‫Vamos mergulhar e ver como fazer isso.

5
00:00:20,630 --> 00:00:25,970
‫Agora, se diminuirmos o zoom em nosso gráfico de eventos, podemos ver que está começando a ficar muito barulhento.

6
00:00:25,970 --> 00:00:28,580
‫Também posso ver alguns nós que não estão conectados a nada.

7
00:00:28,580 --> 00:00:33,740
‫Há um nó de obtenção de munição, que vou excluir e um nó de munição definido, mas você pode ver que está ficando

8
00:00:33,740 --> 00:00:34,310
‫muito barulhento.

9
00:00:34,310 --> 00:00:36,800
‫Está ficando difícil entender o que está acontecendo aqui.

10
00:00:36,830 --> 00:00:45,320
‫Agora, uma solução típica que as pessoas fazem é dizer: Bem, este bloco de nós aqui é sobre gerar o

11
00:00:45,320 --> 00:00:45,950
‫projétil.

12
00:00:45,950 --> 00:00:47,090
‫Para que eu possa selecionar estes.

13
00:00:47,300 --> 00:00:54,020
‫Eu posso apertar a tecla C e isso vai colocar um bloco em torno disso chamado bloco de comentários.

14
00:00:54,020 --> 00:01:02,300
‫E então eu poderia digitar projéteis de desova e isso me deixaria saber o que esse bloco de código está fazendo.

15
00:01:02,300 --> 00:01:05,180
‫Essa é certamente uma maneira de organizar seu código.

16
00:01:05,540 --> 00:01:12,530
‫No entanto, na minha opinião, não é a melhor maneira e temos ferramentas melhores para fazer isso chamadas de funções.

17
00:01:12,710 --> 00:01:14,180
‫Então, o que todas as funções?

18
00:01:14,750 --> 00:01:20,450
‫As funções executam blocos de projeto e fazem nossos jogos fazerem coisas.

19
00:01:20,480 --> 00:01:25,100
‫Muitos nós fornecidos pelo Unreal já são funções.

20
00:01:25,430 --> 00:01:27,350
‫Então nós encontramos estes.

21
00:01:27,350 --> 00:01:33,140
‫Quando você vai e aumenta o zoom, digamos, em nosso nó de projétil de ator de desova, isso é uma função.

22
00:01:33,140 --> 00:01:39,380
‫Quando olhamos para adicionar impulso, essa é uma função para quase todos esses nós, mesmo coisas como avançar vetor ativo

23
00:01:39,380 --> 00:01:44,180
‫que não tem um pedal de execução não é azul também é uma função que

24
00:01:44,180 --> 00:01:50,870
‫você pode dizer porque tem um pequeno símbolo f no canto superior esquerdo que significa função, mas não estamos restritos às funções

25
00:01:50,870 --> 00:01:52,340
‫que o Unreal fornece.

26
00:01:52,340 --> 00:01:56,810
‫Podemos criar nossas próprias funções também, e isso é muito fácil de fazer em blueprints.

27
00:01:57,140 --> 00:02:02,570
‫Eles nos permitem manter a organização e nos permitem reutilizar blocos de código.

28
00:02:02,570 --> 00:02:06,320
‫Então isso é melhor do que um comentário porque um comentário você tem que copiar e colar.

29
00:02:06,590 --> 00:02:12,470
‫Considerando que uma função nos permite compartilhar um bloco de código entre vários locais de uso.

30
00:02:12,710 --> 00:02:19,010
‫Então, vamos dar uma olhada em como podemos transformar algo assim em um bloco de código.

31
00:02:19,700 --> 00:02:24,530
‫Bem, podemos excluir o bloco de comentários, em primeiro lugar, porque não acho necessário.

32
00:02:24,530 --> 00:02:31,280
‫Em vez disso, vou selecionar todos os nós de get play a -- todo o caminho para adicionar impulso, clique com

33
00:02:31,280 --> 00:02:34,910
‫o botão direito sobre eles e selecione recolher para funcionar.

34
00:02:35,480 --> 00:02:42,860
‫E isso cria um novo bloco e substitui todos os nós anteriores que estavam lá antes.

35
00:02:42,870 --> 00:02:46,250
‫Agora vou pegar essa função, um nome que você pode ver no painel esquerdo.

36
00:02:46,610 --> 00:02:53,840
‫Ele criou uma nova função na seção de função no painel do meu projeto e foi

37
00:02:53,840 --> 00:02:59,450
‫selecionada para eu renomear automaticamente porque definitivamente devemos renomear essas funções e

38
00:02:59,450 --> 00:03:01,970
‫vou chamá-la de spawn projectile.

39
00:03:02,120 --> 00:03:09,380
‫E uma boa nomenclatura é absolutamente vital na programação porque o código é essencialmente uma questão de comunicação.

40
00:03:09,590 --> 00:03:14,540
‫Estamos tentando nos comunicar com nós mesmos para que possamos entender o que escrevemos.

41
00:03:14,780 --> 00:03:17,180
‫Estamos tentando nos comunicar com nós mesmos no futuro.

42
00:03:17,180 --> 00:03:21,650
‫Quando voltamos a este projeto e eu esqueci por que o escrevemos de uma certa maneira, e quando você

43
00:03:21,650 --> 00:03:25,180
‫trabalha em equipe, você está tentando se comunicar com o resto de sua equipe também.

44
00:03:25,370 --> 00:03:30,920
‫Alguns dizem que uma boa métrica para a qualidade do código é o que diabos é por minuto.

45
00:03:31,220 --> 00:03:36,440
‫Então, se você está lendo um pedaço de código e diz, que diabos, 50 vezes por minuto, isso é um código

46
00:03:36,440 --> 00:03:41,000
‫muito ruim se você está lendo e apenas dizendo, que diabos, uma ou duas vezes por minuto, então

47
00:03:41,000 --> 00:03:44,900
‫esse é provavelmente um código muito bom e você sempre obterá algum, que diabos?

48
00:03:44,900 --> 00:03:49,010
‫Então, estamos apenas tentando reduzir esse número que funciona.

49
00:03:49,220 --> 00:03:51,590
‫Fundamentalmente, tendemos a nomear funções como verbos.

50
00:03:51,590 --> 00:03:58,040
‫Existem algumas exceções a essa regra sobre as quais falaremos mais tarde, mas a maioria das funções são coisas que estão

51
00:03:58,040 --> 00:03:59,210
‫fazendo alguma coisa.

52
00:03:59,210 --> 00:04:06,200
‫Então, usamos fazer palavras e, se você não tiver certeza sobre como nomear essa função, se estiver trabalhando em equipe, poderá

53
00:04:06,200 --> 00:04:11,360
‫conversar com outra pessoa e perguntar como ela acha que você deve nomeá-la e que

54
00:04:11,360 --> 00:04:13,970
‫tipo de coisas faça sentido para eles.

55
00:04:13,970 --> 00:04:19,700
‫Muitas vezes você descobre que está tão enraizado em um problema que não consegue pensar em como falar sobre ele.

56
00:04:19,760 --> 00:04:26,390
‫Então você pode estar se perguntando: Bem, para onde foi todo o meu código quando criei essa função de projétil de

57
00:04:26,390 --> 00:04:26,930
‫desova?

58
00:04:27,440 --> 00:04:34,580
‫Bem, você pode voltar a esse detalhe de como essa função é realmente implementada clicando duas vezes nela no

59
00:04:34,580 --> 00:04:40,640
‫gráfico de eventos ou clicando nela na guia My Blueprints ou clicando duas vezes na guia

60
00:04:40,670 --> 00:04:41,780
‫My Blueprints.

61
00:04:41,780 --> 00:04:48,800
‫E você pode ver que temos todos os nossos nós ainda residentes aqui, agora eles estão em uma guia

62
00:04:49,040 --> 00:04:56,180
‫separada para que você possa voltar à guia do gráfico de eventos ou mergulhar na guia Projétil de Spawn, que

63
00:04:56,180 --> 00:04:57,740
‫mostra apenas aquele função.

64
00:04:58,730 --> 00:05:04,880
‫E você pode ver que há um novo nó aqui, este pequeno nó roxo, que é o ponto de entrada para nossa

65
00:05:04,880 --> 00:05:05,390
‫função.

66
00:05:05,390 --> 00:05:09,740
‫Isso diz que é isso que devemos fazer quando a função é iniciada.

67
00:05:09,740 --> 00:05:10,970
‫É apenas um ponto de entrada.

68
00:05:11,240 --> 00:05:16,850
‫E sempre que for chamado, esse nó irá acionar e acionar todos os outros nós dentro de

69
00:05:16,850 --> 00:05:17,570
‫nossa função.

70
00:05:17,720 --> 00:05:19,690
‫Então, voltando ao gráfico de eventos e.

71
00:05:19,900 --> 00:05:25,690
‫Diminuindo o zoom, talvez aproximando um pouco os ânodos agora que tornamos nosso gráfico de nós muito menor e mais

72
00:05:25,690 --> 00:05:26,590
‫fácil de ler.

73
00:05:26,950 --> 00:05:33,520
‫Acho que há mais alguns candidatos aqui para retirarmos funções e substituirmos as coisas.

74
00:05:34,030 --> 00:05:38,260
‫Um deles seria onde estamos imprimindo munição.

75
00:05:38,410 --> 00:05:43,720
‫Então, neste caso, imprimir munição é algo que fazemos em dois lugares.

76
00:05:43,720 --> 00:05:47,600
‫Fazemos isso no início do jogo e fazemos isso no projétil de desova.

77
00:05:48,310 --> 00:05:53,920
‫E então o outro lugar, a outra coisa, parte da funcionalidade que poderíamos extrair em

78
00:05:54,310 --> 00:06:01,150
‫uma função seria onde estamos diminuindo a munição que poderia ser colocada em uma função de diminuição de munição.

79
00:06:01,240 --> 00:06:09,490
‫Então, pouco antes de lançar o desafio, gostaria de excluir o nó de conversão e imprimir o nó

80
00:06:09,670 --> 00:06:15,240
‫da string após o projétil de desova, porque isso complicará as coisas.

81
00:06:15,250 --> 00:06:21,320
‫Eu gostaria de copiar a funcionalidade de cima para que ambos pareçam exatamente iguais.

82
00:06:21,340 --> 00:06:29,140
‫Então, se copiarmos os três nós de Begin Play e colá-los abaixo e conectar os pinos de execução, você verá

83
00:06:29,140 --> 00:06:35,020
‫que temos exatamente o mesmo conjunto de nós, temos a mesma funcionalidade entre os dois

84
00:06:35,020 --> 00:06:39,910
‫e não há confusão quando chegamos a extrair isso em função.

85
00:06:39,970 --> 00:06:43,200
‫Então eu gostaria de desafiá-lo a fazer mais algumas funções.

86
00:06:43,210 --> 00:06:47,090
‫O primeiro que eu recomendaria fazer é diminuir a munição.

87
00:06:47,110 --> 00:06:51,820
‫Então, pegando os três nós envolvidos na diminuição da munição, extraindo-os em uma função e dando-lhes

88
00:06:51,820 --> 00:06:52,510
‫um nome.

89
00:06:53,020 --> 00:06:55,990
‫E então o segundo é munição de impressão.

90
00:06:56,020 --> 00:07:03,220
‫Então, você vai extrair a funcionalidade de obter, converter e imprimir a munição

91
00:07:03,220 --> 00:07:05,530
‫em uma única função.

92
00:07:05,860 --> 00:07:11,710
‫E como temos dois sites onde estamos imprimindo munição, você deseja excluir um deles e trazer

93
00:07:11,710 --> 00:07:16,750
‫a função, o que você pode fazer arrastando do painel meu projeto.

94
00:07:17,380 --> 00:07:22,720
‫E, finalmente, temos algumas mensagens de boas-vindas, saída de nós de mensagem de boas-vindas.

95
00:07:22,720 --> 00:07:26,800
‫Você também pode extraí-los em uma função de impressão de mensagens de boas-vindas.

96
00:07:27,220 --> 00:07:28,900
‫Pause o vídeo e vá em frente.

97
00:07:32,110 --> 00:07:32,700
‫OK.

98
00:07:32,710 --> 00:07:33,430
‫Bem vindo de volta.

99
00:07:33,550 --> 00:07:37,390
‫Então vamos extrair nossa munição menor primeiro.

100
00:07:37,390 --> 00:07:41,590
‫Portanto, há três nós envolvidos que clicarão com o botão direito do mouse para recolher a função.

101
00:07:42,190 --> 00:07:47,710
‫Então vamos chamá-lo de diminuir munição e isso é bastante simples.

102
00:07:47,710 --> 00:07:51,910
‫Então spawn projétil diminui munição e então estamos imprimindo a munição.

103
00:07:51,910 --> 00:07:58,180
‫Então, vamos pegar os três nós, a string get convert e print e vamos clicar com o botão direito do

104
00:07:58,180 --> 00:08:01,750
‫mouse para recolher a função e chamar essa munição de impressão.

105
00:08:02,560 --> 00:08:08,530
‫Agora, como eu disse, temos essa funcionalidade repetida em dois lugares, então vamos deletar onde ela faz isso

106
00:08:08,530 --> 00:08:16,150
‫e começar a placa e apenas arrastar a munição de impressão da nossa lista de funções e conectar os pinos de execução para

107
00:08:16,150 --> 00:08:19,570
‫que ela seja executada após o nosso seqüência de impressão.

108
00:08:20,260 --> 00:08:25,480
‫O que me leva à última função que quero criar, que dissemos que chamará print mensagens de boas-vindas.

109
00:08:25,690 --> 00:08:27,610
‫Então, vou selecionar as duas strings de impressão.

110
00:08:27,610 --> 00:08:34,240
‫Eu tenho que começar a jogar o colapso para funcionar e chamá-lo de imprimir mensagens de boas-vindas.

111
00:08:34,420 --> 00:08:42,220
‫E neste nó podemos agora reorganizar todos os nossos nós para facilitar a leitura de tudo isso em uma

112
00:08:42,220 --> 00:08:43,130
‫tela cheia.

113
00:08:43,150 --> 00:08:49,900
‫Você pode ver que é muito mais fácil entender a funcionalidade do nosso jogo agora porque tudo

114
00:08:49,900 --> 00:08:56,350
‫cabe em uma tela e é bem trazido para um nível semelhante de abstração e compreensão.

115
00:08:56,350 --> 00:09:02,800
‫E isso é o que chamaríamos de código autodocumentado, porque é um código que não precisa de comentários ou documentação

116
00:09:02,800 --> 00:09:04,690
‫para explicar o que faz.

117
00:09:04,930 --> 00:09:06,850
‫Apenas lê como o inglês.

118
00:09:07,210 --> 00:09:07,840
‫Coisas boas.

119
00:09:08,140 --> 00:09:09,880
‫Vejo você na próxima palestra.

