‫Olá e bem-vindo.
‫Nesta palestra, aprenderemos sobre funções que não residem nos blueprints de nível, mas em
‫uma classe de blueprint específica.
‫Elas são chamadas de funções-membro e são absolutamente cruciais para a programação orientada a objetos.
‫Vamos mergulhar e ver como eles funcionam.
‫Então, em nossa função de projétil de geração nos planos de nível, temos uma carga de nós aqui relacionados à adição do
‫impulso, obtendo a direção do impulso e obtendo o componente de malha estática.
‫Todos esses nós usam a instância do projétil BP em profundidade.
‫Não seria ótimo se pudéssemos pegar todo esse código e movê-lo para o projétil BP para que o
‫código que lida com esses dados vivesse com os próprios dados?
‫Bem, esse é o objetivo da programação orientada a objetos.
‫Assim, podemos definir a programação orientada a objetos como funções que vivem com os dados que elas manipulam.
‫Então, como isso funciona?
‫Como podemos fazer funções em instâncias particulares de coisas?
‫Bem, uma maneira de fazer isso, podemos abrir nossa classe de projétil BP e ter certeza de clicar
‫em abrir o editor de blueprint completo é que você pode ver que neste editor de blueprint completo há um painel
‫de meu blueprint e uma seção de função para que possamos clicar na seta de mais aqui para criar uma nova função na classe de projétil
‫BP.
‫E eu vou nomear essa função, imprimir seu nome e isso imprimir seu nome.
‫A função deve fazer exatamente isso.
‫Podemos ver que temos um nó que inicia a execução nesta função para que possamos retirar seu
‫pino de execução e digitar print string.
‫Então isso vai ser impresso.
‫Olá.
‫Não é exatamente o nome desta função, não é?
‫Mas vamos resolver isso em apenas um segundo.
‫Então, o que temos aqui é conhecido como função-membro.
‫Uma função membro é uma função em uma classe que sempre é chamada em uma instância específica de uma classe.
‫Então você não diz, eu vou chamar ou imprimir seu nome em todos os projéteis BP.
‫Você tem que dizer, eu quero ligar, imprimir seu nome no projétil BP número um, ou projétil BP que
‫acabou de ser gerado.
‫Então, se formos para o nosso plano de nível, o que você teria que fazer é pegar a referência que saiu do
‫projétil BP de spawn.
‫E a partir dessa referência você pode chamar print your name e você pode ver que ele se conecta automaticamente
‫a uma nota de entrada especial chamada Target.
‫E obviamente você também precisa conectar seus pinos de execução.
‫Vou ligá-lo para acontecer depois de adicionar impulso.
‫Mas o que é interessante sobre esse nó de entrada de alvo especial é que, se você for até o projétil BP,
‫verá essa impressão.
‫Seu nome não tem essa carga de entrada.
‫Então o que está acontecendo aqui?
‫Bem, implicitamente, qualquer função membro tem um parâmetro que é seu destino atual ou a instância atual.
‫E você pode obter isso clicando com o botão direito do mouse no gráfico de eventos do blueprint e digitando self.
‫E você pode ver que há um nó chamado get a reference to self e ele apenas cria um nó self como
‫este.
‫E então você pode usar essa referência de objeto próprio para obter qualquer uma das propriedades desse objeto
‫específico.
‫Então, se quisermos obter o nome do nosso projétil BP, você pode retirar a auto-referência e
‫digitar get display name, o que fizemos antes.
‫E então você pode conectar o nome de exibição em nossa string de impressão.
‫Então agora quando jogamos e disparamos um novo projétil, você pode ver que está imprimindo o nome do projétil e
‫você pode ver se cada novo projétil que cria o nome é diferente porque o self que
‫está sendo referido pela função membro é um eu diferente é um projétil diferente.
‫Então, aprendemos que self é um nó disponível dentro de funções-membro que sempre aponta para
‫a instância atual específica que estamos usando.
‫Então, todo o objetivo de olhar para as funções-membro em primeiro lugar, a razão pela qual começamos
‫foi por causa desses nós nos planos de nível, a maneira como obtemos a mistura estática, obtemos o vetor
‫direto e adicionamos um impulso a eles.
‫Estes parecem que deveriam viver no projétil BP.
‫E é isso que eu gostaria de desafiá-lo a fazer.
‫Portanto, esta é uma cobrança um pouco complicada, mas estamos chegando ao final da seção.
‫Então eu vou te guiar passo a passo.
‫Então vamos fazer um func de lançamento.
‫Brilhe no projeto BP, também criado nos projetos BP.
‫Eu vou para as partes mais e adicionar uma nova.
‫Dê o nome de lançamento.
‫Em seguida, corte e cole os nós dos planos de nível nesta sua função recém-criada e certifique-se
‫de conectar pinos de execução e etc.
‫Agora você vai tentar compilar.
‫Não temos feito isso com muita frequência em blueprints, mas compilar apenas permite que você essencialmente
‫verifique a ortografia do seu código e certifique-se de que não haja erros que o compilador do Blueprint possa prever.
‫Então, a maneira de fazer isso é ir até o botão no canto superior esquerdo e clicar em compilar, e se
‫houver algum erro, eles aparecerão na parte inferior do pequeno painel chamado resultados do compilador.
‫Você pode ver que a compilação foi bem-sucedida, mas quaisquer erros aparecerão aqui e às vezes você terá um
‫pouco de vermelho em um nó para indicar onde está o erro.
‫E eu gostaria de ver se você pode tentar entender o que esse erro está dizendo e tentar
‫corrigir o erro usando o novo nó self que aprendemos.
‫E então você precisa ir em frente e chamar essa função dos blueprints de nível arrastando para fora da instância, como
‫fizemos para o nosso nó print-yourself, arraste para fora da instância do novo projétil criado a partir do
‫nó spawn e chame a função de lançamento.
‫Pause o vídeo e vá em frente.
‫OK.
‫Bem vindo de volta.
‫Então, vou para o nosso projétil de BP, aperte o botão de adição ao lado de funções
‫no painel do meu plano e digite launch para nomear a função que vamos voltar ao nosso plano de nível,
‫cortar os nós e entrar no BP projétil e cole-os.
‫Agora eu tenho que ligar a execução do lançamento para adicionar impulso e agora vou clicar, compilar e
‫você vê que recebo um erro no mash estático ou obtenho o nó de mash estático.
‫E se você olhar nos resultados do compilador, ele diz que usa um destino inválido.
‫Portanto, o destino desta entrada aqui não está correto.
‫Agora, como eu recomendei, você pode clicar com o botão direito do mouse e digitar self para obter uma referência a self e,
‫em seguida, trazer esse self para o destino.
‫Agora, se você clicar em compilar novamente, poderá ver que o erro desapareceu
‫e foi compilado com sucesso, porque o que está acontecendo é que agora é capaz de obter os componentes estáticos do projétil atual.
‫Esta função de inicialização está sendo chamada.
‫Então, se voltarmos aos nossos planos de nível agora, podemos pegar o pino de saída do nosso ator de spawn e podemos
‫digitar launch para chamar nossa função de lançamento.
‫Você pode ver que o pino de execução foi automaticamente conectado para mim e, em seguida, após a
‫função de inicialização, podemos conectar nossa função print your name, se quisermos, embora isso tenha sido apenas
‫para fins de depuração e demonstração e, se você testar, você pode ver que ainda está sendo lançado com
‫sucesso, exceto agora o código que lida com o lançamento de vidas no próprio projétil.
‫Coisas boas.
‫Aprendemos sobre um dos conceitos centrais da programação orientada a objetos nesta palestra sobre funções de membro.
‫Vejo você na próxima.