‫Ei, bem-vindo de volta.
‫No último vídeo, aprendemos alguns novos especificadores de propriedade que nos permitem expor nossas variáveis C++ de
‫determinadas maneiras ao painel de detalhes nos blueprints.
‫Neste vídeo, vamos aprender mais alguns especificadores que nos permitem ter mais controle sobre o acesso
‫a essas variáveis.
‫No painel de detalhes, também falaremos sobre como podemos permitir, ler ou gravar acesso no
‫gráfico de eventos real para uma variável C++ específica.
‫Então vamos mergulhar direto.
‫OK.
‫Então estou de volta aqui no código VS e aqui estão as variáveis que criamos no último vídeo.
‫Agora aqui está minha variável de velocidade.
‫Isso foi para o desafio.
‫Você provavelmente criou uma variável diferente, o que é totalmente bom, então mantenha essa variável lá.
‫Vamos fazer mais algumas coisas com ele neste vídeo.
‫Agora aprendemos que podemos tornar uma variável visível em qualquer lugar, e quando dizemos em qualquer lugar, queremos
‫dizer no painel de detalhes, seja em uma instância ou no blueprint padrão.
‫Vimos que também podemos editá-lo em qualquer lugar e, quando usamos somente instância visível, ele fica visível apenas em
‫uma instância.
‫Você nem pode vê-lo no blueprint padrão e, em qualquer caso, não pode editá-lo porque está
‫acinzentado.
‫Portanto, isso nos permite tornar nossa variável visível apenas na instância.
‫Mas e se quisermos que seja visível apenas no blueprint padrão?
‫Bem, há um especificador para isso também.
‫Vamos fazer outro em 32 e vamos chamar isso de padrões visíveis apenas int.
‫E podemos inicializar isso com um valor.
‫Vou dar cinco e vamos dar a isso uma propriedade U também.
‫E as especificações são para tornar isso visível apenas nos padrões.
‫Você provavelmente pode adivinhar o que é.
‫São apenas padrões visíveis.
‫Então vou compilar isso e de volta aqui no editor, vou abrir o BP Pond Tank novamente.
‫E com BP Pond Tank auto-selecionado, todas as nossas variáveis estão aqui no topo, então não
‫vou procurá-las.
‫Mas aqui estão nossos padrões visíveis apenas int e tem o valor cinco e é claro que está acinzentado agora como
‫o nome sugere, é visível apenas no padrão.
‫Então, se eu for no mundo e selecionar uma das instâncias do tanque da lagoa BP aqui, não há padrões
‫visíveis apenas int não é visível na instância, apenas no padrão.
‫Então isso faz sentido agora.
‫Vamos voltar ao código VS e temos mais alguns especificadores para aprender.
‫Agora vimos que podemos editar em qualquer lugar e que com nossos especificadores visíveis podemos escolher apenas
‫instância ou apenas padrão.
‫Então, como você provavelmente adivinhou, podemos editar apenas a instância ou apenas os padrões, se quisermos.
‫Então vamos fazer mais um par em 30 pares.
‫Vou fazer um chamado edit defaults only int e inicializá-lo com um valor, digamos nove, e
‫depois outro int 32 chamado edit instance only int.
‫E eu vou dar a isso um valor de 14.
‫Portanto, queremos que editar defaults only int seja editável apenas nos defaults e edit instance apenas e que
‫seja editável apenas na instância.
‫Agora, os nomes desses especificadores são bastante consistentes, então gostaria que você adivinhasse quais seriam os especificadores
‫para esses dois níveis de acesso.
‫Vá em frente e faça um pequeno mini desafio rápido.
‫Pause o vídeo e preencha, veja se você está certo.
‫Ok, então estas serão suas propriedades e padrões de edição.
‫O único fim vai te levar provavelmente adivinhou.
‫Edite apenas padrões e apenas para editar instância int Eu darei a isso uma macro de propriedade u e isso
‫será apenas para editar instância.
‫Então é bem intuitivo.
‫Vamos em frente e compilar isso e voltar aqui no editor com BP -- tanque aberto aqui estão nossos
‫padrões de edição apenas int não vemos apenas a instância de edição e não esperávamos que esteja definido como
‫nove aqui podemos alterá-lo e se vamos para o mundo com uma de nossas instâncias selecionadas, podemos ver edit instance apenas
‫int e, claro, isso também é editável.
‫Então, agora adicionamos três novos especificadores ao nosso gráfico aqui.
‫Temos apenas padrões visíveis, que estão apenas na coluna padrão e na linha somente leitura.
‫E então temos editar apenas padrões e editar instância apenas em suas respectivas linhas.
‫Estamos preenchendo este gráfico rapidamente, mas você notará que há alguns espaços vazios
‫à direita e a coluna do gráfico de eventos.
‫Então, vamos falar sobre isso por um minuto agora.
‫Estou aqui no BP Pond Tank, e temos todas essas variáveis que expusemos aos detalhes, painéis, dependendo
‫de seus especificadores.
‫Você pode vê-los aqui ou em uma instância.
‫Mas e se eu clicar com o botão direito aqui no gráfico de eventos?
‫O gráfico de eventos é outro lugar onde podemos acessar variáveis e potencialmente alterá-las.
‫Então, se eu digitar edit em qualquer lugar, não vejo a edição em nenhum lugar.
‫INT não é exposto ao gráfico de eventos.
‫Não temos acesso a isso.
‫Há outros especificadores que nos permitem expor coisas aqui no gráfico de eventos e que podem funcionar
‫em conjunto com os especificadores que controlam a acessibilidade do painel de detalhes.
‫E gostaria de expor uma dessas variáveis ao gráfico de eventos.
‫Agora, eu poderia escolher qualquer um desses, mas vou escolher este visível em qualquer lugar.
‫INT Agora o U.
‫A macro de propriedade pode receber várias entradas, portanto, temos visíveis em qualquer lugar.
‫Ainda podemos ter isso.
‫Vou colocar uma vírgula e gostaria de adicionar outra especificada a que dará a essa exposição final visível
‫em qualquer lugar ao gráfico de eventos.
‫Então, o que eu vou usar é leitura de projeto, escrita, leitura de projeto.
‫Write tem a ver com o gráfico de eventos.
‫Não tem nada a ver com o controle sobre o painel de detalhes.
‫É para isso que serve este visível em qualquer lugar.
‫Portanto, o Blueprint Rewrite faz, como o nome sugere, acesso de leitura e acesso de gravação.
‫Então vamos ver como isso se parece.
‫Vamos compilar isso e estou de volta aqui no editor no gráfico de eventos se eu clicar com o botão direito e digitar visível
‫em qualquer lugar.
‫Veremos duas opções diferentes ficarem visíveis em qualquer lugar int e definidas visíveis em qualquer lugar.
‫INT Se você selecionar, fique visível em qualquer lugar.
‫INT Nós obtemos um nó e isso é como qualquer outro nó do blueprint, ele representa essa variável C++
‫e se arrastarmos isso, podemos acessar esse valor para fazer algo com ele.
‫Agora eu vou rolar para fora e você verá que temos esses nós acinzentados que começam, se sobrepõem e
‫marcam o evento e Begin Play é chamado no início do jogo, como você sabe.
‫Então podemos fazer algo aqui.
‫Eu gostaria de usar um nó de string de impressão e, se eu arrastar e digitar string de impressão, aqui está.
‫É um nó de função blueprint e recebe uma entrada chamada em string.
‫Agora, se eu passar o mouse sobre ele, ele diz em string e depois string logo abaixo disso.
‫Esse é o tipo que este nó aceita como parâmetro de entrada.
‫E sabemos que nosso int visível em qualquer lugar é um int 32, não uma string.
‫Mas se você clicar na saída desta nota e arrastá-la e colocá-la aqui na entrada antes de soltar o botão esquerdo
‫do mouse, você verá um pop-up que diz convert integer to string e, se você soltar, obterá
‫este nó de conversão útil que converte de um inteiro para o tipo string, o que é muito útil
‫para nós porque não precisamos descobrir como converter um inteiro em uma string.
‫É apenas automático para nós.
‫Agora, se eu apertar play, veremos o valor 12 impresso três vezes e dura apenas alguns segundos.
‫Esse é o comportamento da string de impressão.
‫Agora, a razão de vermos três vezes é porque eu tenho três instâncias diferentes de tanques BP aqui
‫no mundo.
‫Dependendo de quantos você arrastou para o mundo, você verá muitos.
‫Porque para cada uma dessas instâncias individuais, começar a jogar está sendo chamado no início do
‫jogo.
‫Então, apenas para evitar confusão, vou excluir meus outros dois e deixar uma única instância do Beep
‫Pond Tank aqui no mundo.
‫Então, eu tenho apenas um e se eu apertar play novamente, vejo 12 impressos na tela apenas uma vez.
‫Então, isso é acesso de leitura para visível em qualquer lugar int, mas vimos que também temos acesso de gravação.
‫Isso significa que podemos definir seu valor aqui no gráfico de eventos.
‫Então, se eu clicar com o botão direito do mouse e digitar visible em qualquer lugar int novamente, posso selecionar set visible em qualquer
‫lugar int e tenho um nó setter que recebe uma entrada que podemos passar o valor de algum outro nó ou podemos
‫pegar essa pequena caixa de texto e código rígido de valor, digamos 66.
‫E agora, assim que o fluxo de execução do início da reprodução atingir esse nó,
‫o nó setter irá gravar para visível em qualquer lugar e definirá seu valor como 66.
‫E é claro que podemos imprimir isso novamente.
‫Então eu vou usar string de impressão.
‫E para o valor passado na string de impressão, gostaria do valor de visible em qualquer lugar int.
‫Agora eu posso fazer isso de duas maneiras.
‫O setter tem um nó de retorno, então depois de definir o valor, ele retorna esse valor e podemos usá-lo
‫para que possamos conectá-lo diretamente à string de impressão.
‫A outra maneira é simplesmente clicar com o botão direito e ficar visível em qualquer lugar usando esse nó get e
‫podemos conectar o valor desse nó diretamente na string de impressão que faria exatamente a mesma coisa.
‫Então eu não preciso disso.
‫Vou deletar esse nó.
‫E agora o que espero ver quando eu jogar o jogo é primeiro imprimir o valor de visible em
‫qualquer lugar int, que começa em 12 e depois de definir seu valor para 66, devo ver o valor 66 imprimi-lo para
‫a tela.
‫Então vamos apertar o play e vemos 12 e 66.
‫Agora eles parecem estar na ordem inversa.
‫Isso ocorre porque a string de impressão adiciona mensagens mais recentes na parte superior.
‫Então esse é um comportamento normal.
‫Certo, ótimo.
‫Então, vimos que podemos fazer uma leitura de blueprint de variável agora.
‫Também podemos controlar se podemos ou não definir isso no gráfico de eventos.
‫Então, vamos expor outra variável para que possamos obtê-la de blueprints, mas não defini-la aqui, edite em qualquer lugar.
‫INT Vou adicionar uma vírgula e adicionar um especificado a isso agora para acessá-lo no gráfico de eventos, mas
‫não ser capaz de configurá-lo ou gravá-lo.
‫A hora especificada é somente leitura do blueprint, portanto, editar em qualquer lugar int agora é somente leitura do blueprint.
‫Ainda é editável no painel de detalhes, tanto no padrão quanto nas instâncias, mas no gráfico de eventos é
‫somente leitura.
‫Então vamos compilar isso e voltar aqui no editor, vou clicar com o botão direito do mouse no gráfico
‫de eventos e digitar edit em qualquer lugar e conferir.
‫Conseguimos editar em qualquer lugar, mas não temos uma edição definida em nenhum lugar porque é somente leitura
‫do modelo, não podemos escrever nele.
‫Então eu vou selecioná-lo.
‫Aqui é editar em qualquer lugar.
‫INT E se eu quisesse eu poderia usar um nó de string de impressão para ver seu valor.
‫Não precisa fazer isso.
‫Já sabemos como fazer isso.
‫Estou apenas demonstrando que não podemos escrever nesta variável.
‫Ok, então vou seguir em frente e destacar esses nós e excluí-los.
‫Então nosso gráfico está agora preenchido.
‫Aprendemos que podemos tornar nossas variáveis visíveis apenas nos padrões e podemos torná-las editáveis apenas
‫nos padrões ou apenas na instância.
‫Portanto, realmente temos controle total do lado C++.
‫Agora também vimos que podemos expor essas variáveis ao gráfico de eventos e torná-las somente leitura ou leitura
‫correta usando esses especificadores de somente leitura, leitura e gravação do blueprint.
‫Então agora você tem um desafio.
‫Na última aula criamos uma variável.
‫Eu fiz uma bóia e chamei de velocidade.
‫Agora você vai pegar essa variável.
‫Você o cria na última seção e controla seu acesso no gráfico de eventos.
‫Portanto, exponha-o ao gráfico de eventos usando um dos novos especificadores que você aprendeu e, em seguida, testará
‫o acesso de leitura e gravação para isso.
‫Use um nó de string de impressão para que você possa ver seu valor e, se alterá-lo, prove a si mesmo
‫que o alterou.
‫Portanto, se você fizer a leitura correta do seu blueprint variável, tente alterá-lo com um nó definido e, em seguida, use um nó
‫de string de impressão para ver seu valor usando o evento start play.
‫Se você fez o blueprint somente leitura, você pode simplesmente obter o valor e imprimir seu valor usando a string de
‫impressão.
‫Portanto, adicione a especificação correta à sua variável personalizada e use a string de impressão para testar o acesso no gráfico de
‫eventos.
‫Pause o vídeo e experimente.
‫OK.
‫Então, vou rolar para baixo até minha variável de velocidade aqui e minha variável de velocidade é editada em qualquer lugar e gostaria
‫que fosse lida no modelo.
‫Certo, para que eu possa alterá-lo de dentro do gráfico de eventos.
‫Então eu vou adicionar blueprint, ler, escrever e simplesmente compilar.
‫Então, de volta ao tanque da lagoa da BP, se eu digitar speed agora, vejo o getter e o setter para isso.
‫Então eu vou usar a velocidade definida.
‫Vou definir seu valor a partir de Begin Play.
‫Então vamos ligar isso.
‫E para o valor, vou inserir 900 e a partir da nota definida, se eu arrastar, posso digitar print string.
‫Agora vou clicar e arrastar para fora do nó de saída, ligá-lo à string.
‫Então, se eu apertar o play, há 900, observe que diz 900. 0.
‫Isso porque este é um flutuador.
‫E isso está me dando a cortesia de mostrar o primeiro ponto decimal.
‫Então esse é um bom recurso embutido aqui.
‫Está me mostrando um dígito à direita do ponto decimal para minha variável de velocidade.
‫Então, em resumo, aprendemos mais alguns especificadores para a nova macro de propriedades.
‫Aprendemos apenas padrões visíveis, editar apenas padrões e editar apenas instância.
‫E também aprendemos como podemos controlar o acesso de leitura e gravação no gráfico de eventos com Blueprint, read,
‫write e Blueprint Read.
‫Apenas o programador C++ tem muito controle sobre o que é exposto e o que pode ser alterado no
‫blueprint e onde usaremos isso ao longo desta seção do curso.
‫E você continuará a usá-los ao longo de sua carreira como desenvolvedor de mecanismos irreais.
‫Vejo você na próxima palestra.