‫Olá e bem-vindo.
‫Nesta palestra, acessaremos os atores sobrepostos em algo chamado array para
‫que possamos imprimir os atores que vemos dentro deste volume inteiramente em C++.
‫Vamos mergulhar e ver como é feito.
‫Assim como nas analogias anteriores, vamos imaginar que um tipo ou uma variável é uma caixa na qual colocamos um valor.
‫Agora, o que acontece se não soubermos quantos valores queremos armazenar?
‫Podemos criar muitas variáveis.
‫Se soubéssemos que teríamos cinco, poderíamos fazer cinco variáveis.
‫Mas e se tivéssemos algo imprevisivelmente muitos, como o número de atores que temos em nosso nível A
‫ou os atores que estão se sobrepondo a um volume de disparo específico?
‫Nesse caso, precisamos usar um novo tipo de dados chamado array T no Unreal e basicamente um array T de um
‫determinado tipo.
‫Aqui, novamente, estamos vendo esses colchetes angulares que são, como dissemos anteriormente, parâmetros de tempo de compilação.
‫E desta vez estamos pegando, novamente, um tipo que está nos dizendo que tipo podemos armazenar um array.
‫Um array é como uma variável, exceto que tem várias caixas e o número de caixas que temos pode
‫ser diferente.
‫Quando estamos jogando.
‫Pode mudar.
‫Podemos adicionar mais ou menos à medida que avançamos no jogo, à medida que as coisas começam a se sobrepor com adicionar mais caixas, à medida
‫que as coisas saem da zona de sobreposição, nós as removemos.
‫E como eu disse, este é um parâmetro dentro destes.
‫Parênteses angulares.
‫E assim poderíamos ter uma matriz T de ints, por exemplo, que armazenaria diferentes inteiros nessas
‫caixas.
‫Poderíamos ter uma matriz t de ponteiros de atores, e isso realmente armazenaria os ponteiros nas caixas,
‫que apontariam para os atores no mundo.
‫E como você pode ver, eles podem até se sobrepor para que alguns desses ponteiros apontem para os mesmos atores.
‫Agora pratique isso não seria muito útil, mas certamente é possível.
‫Então, eu quero revisitar a documentação do seu componente primitivo, porque o
‫que estou procurando aqui é uma função chamada obter atores sobrepostos.
‫E se você der uma olhada na função de obter atores sobrepostos, há algumas versões dela.
‫Mas o que é mais interessante para mim é o segundo.
‫Não tem valor de retorno.
‫É um valor de retorno nulo.
‫Mas você pode ver que o primeiro parâmetro aqui é uma matriz de ponteiros de ator com um e comercial no final,
‫o que significa que tudo isso é uma referência a uma matriz t.
‫Agora observe que não é uma referência constante.
‫Portanto, podemos assumir que esse parâmetro é na verdade um parâmetro de saída.
‫Ele nos dá o resultado dos atores sobrepostos e nos diz quais atores estão atualmente sobrepondo com
‫nossos componentes primitivos.
‫Agora acontece que nosso componente box é um componente primitivo.
‫Então nosso componente de gatilho também é componente de projeto, e eu teria acesso a essa função.
‫Há um segundo argumento aqui, mas não precisamos nos preocupar com isso porque na verdade ele tem um
‫valor padrão se o usarmos.
‫Então vamos em frente e tentar obter e preencher um t array de ponteiros ativos.
‫Vamos entrar no componente do truque, CPP.
‫Vamos descer aos componentes do carrapato.
‫E aqui vamos criar um array t vazio que podemos preencher usando esta função.
‫Portanto, a sintaxe é t array abre colchetes angulares uma estrela de ator para dizer que estamos tendo um array t de ponteiros de
‫ator, feche os colchetes angulares e então podemos dar a essa variável o nome de atores.
‫Em seguida, chamaríamos para obter atores sobrepostos e passaríamos na matriz de atores.
‫Agora.
‫Eu não sei por que eles não apenas passam isso como um valor de retorno, mas.
‫Ai está.
‫Isso nos dá a oportunidade de usar esses nossos parâmetros um pouco mais.
‫Agora, isso é tudo muito bem.
‫Temos alguns atores em uma matriz.
‫Há um comprimento variável deles.
‫Pode haver alguns.
‫Pode haver zero.
‫O que fazemos com arrays como este?
‫Bem, podemos consultar quantos itens estão na matriz.
‫Você pode usar a matriz ponto num parênteses e isso pode retornar um inteiro informando quantos itens estão na
‫matriz.
‫Portanto, neste array em particular, poderíamos dizer que existem cinco, e então podemos acessar os itens
‫dentro desse array usando esses colchetes.
‫E então o número que você passa para os colchetes informa qual item obter.
‫E é uma convenção comum em muitas linguagens de programação que começamos a contar de zero em arrays.
‫Portanto, o elemento zero de um array é o primeiro, o elemento um de um array é o segundo, etc.
‫E assim você acaba com o último elemento sempre sendo um a menos que o número de elementos na matriz.
‫Então, como podemos usar esse conhecimento?
‫Bem, por exemplo, só poderíamos imprimir os atores sobrepostos se houver mais de um deles.
‫Então, como faríamos isso?
‫Nós colocaríamos uma declaração if dizendo que se os atores dot num parênteses for maior que zero, então podemos fazer algo aqui, como obter
‫acesso ao elemento zero dos nossos atores porque sabemos que se for maior que zero, deve haver
‫pelo menos menos um elemento ali.
‫Portanto, os elementos zero deste array devem ter algo dentro.
‫Não podemos garantir que o primeiro elemento, o único elemento do array tenha alguma coisa ou os
‫dois elementos tenham alguma coisa.
‫Teríamos que verificar se temos itens suficientes no array para fazer isso, mas definitivamente sabemos que
‫há o primeiro aqui.
‫Então, vamos desafiá-lo a imprimir o primeiro ator sobreposto desse array.
‫Use a matriz para obter o ponteiro usando esses colchetes.
‫Então você vai usar esse ponteiro para chamar, obter ator, nome ou rótulo, e então você
‫vai imprimir isso.
‫Pause o vídeo e vá em frente.
‫OK.
‫Bem vindo de volta.
‫Então, podemos obter o ponteiro aqui usando esses colchetes.
‫E eu vou pegar o nome direto usando o operador de seta e chamando get
‫ator, nome ou rótulo.
‫E vou colocar isso em uma variável de string F chamada nome do ator.
‫Então vamos fazer um log U, que vamos chamar de dois pontos sobrepostos.
‫E então por cento s.
‫E então o segundo argumento aqui deve ser asterisco, nome do ator.
‫Então podemos recompilar, entrar em nosso registro de saída no layout.
‫Então vamos abrir a parede secreta da BP porque não quero imprimir essa string que confunde
‫as coisas.
‫No Blueprint, estamos fazendo isso agora em C++, então vamos para o jogo de acertos no nível da masmorra.
‫E obviamente nada está se sobrepondo a esse ator agora.
‫Então, o que acontece se entrarmos e entrarmos?
‫Você pode ver que ele começa a imprimir instantaneamente, que estamos sobrepondo o player BP.
‫Coisas fantásticas.
‫E se fôssemos pegar a gárgula em vez disso?
‫Leve-o para a alcova, coloque-o e pronto.
‫Diz que está sobrepondo a estátua da gárgula.
‫Coisas boas.
‫Assim, aprendemos como usar um array t para obter uma lista de atores e descobrir quantas coisas
‫estão nessa lista e como obter um item específico dessa lista.
‫Na próxima aula, veremos algumas estruturas de programação que nos permitem
‫lidar com números variáveis de coisas para realizar um número variável de tarefas.
‫Eu te vejo lá.