 Fala galera, Henrique aqui e nesse vídeo eu vou mostrar uma das formas com que a gente pode otimizar os nossos jogos usando os nodes Visibility Not Fire e Visibility Not Fire 2D. A ideia básica dessa otimização é que quando os objetos estiverem fora de tela a gente não vai precisar incluir eles em algumas das nossas mecânicas. Por exemplo, a gente não vai precisar calcular os objetos que estiverem fora de tela quando a gente for selecionar porque no fim das contas a nossa caixa de seleção nunca vai interagir com eles. Então, para evitar de passar por todos os objetos que estão no jogo comunicando para todos que estão fora da tela, que eles não vão ser selecionados, a gente pode simplesmente fazer os objetos se retirarem da lista quando eles estiverem fora da tela e se incluir na lista quando eles estiverem em tela de novo. Os nodes Visibility Not Fire e Visibility Not Fire 2D funcionam como uma caixa delimitando quando o objeto entra ou sai da vioporte. A vioporte é justamente a área do jogo em que as coisas são efetivamente processadas e mostradas para o jogador. Uma vioporte pode ser a visão de uma câmera, por exemplo. No caso do Visibility Not Fire 2D, ele verifica se o objeto está ou não sendo mostrado na vioporte a partir de um rectil, que a gente pode agitar para customizar a área de visibilidade do objeto. Já o Visibility Not Fire, que faz parte do motor 3D, funciona com um AABB, que significa Axis Alignate Bounding Box, ou caixa de delimitação alinhada aos eixos. Parece um nome bem assustador, mas na verdade ela é o equivalente tridimensional para o rectil. Guardem isso em mente porque a gente vai usar isso em outros vídeos. Para a gente implementar essa ultimização nós vamos estanciar esses nodes nos objetos selecionáveis e conectar os sinais Enter Screen e Asset Screen no Selectable Component. E já que as duas funções são essencialmente idênticas nas duas versões do node, você pode simplesmente passar o nome das primeiras funções que você criou na área de conectar o sinal. Assim você não tem o Selectable Component Funcional, independente de ser Node2D ou Special. Nas respectivas funções que foram criadas no script, a gente já fará o seguinte. Vamos passar o que antes estava na função Ready e colocar dentro da função Enter Screen. Já na função Edit Screen a gente vai entrar na lista de objetos selecionáveis e retirar o objeto que saiu da tela. Lembrando que a função ArrayRemove pede um índice na lista do elemento que vai ser removido. Então para a gente garantir que está sempre removendo o objeto correto, vamos usar como argumento para essa função o retorno da função ArrayFind que recebe como argumento o objeto que a gente está procurando na lista e retorna o índice dele. E é isso aí. Desse jeito a gente vai evitar a nossa caixa de seleção de fazer o trabalho desnecessário de alertar os objetos que estão fora da tela que eles não vão ser selecionados. E aí vocês podem estar usando essa mesma otimização para várias outras mecânicas onde os objetos que estão fora de tela não vão interagir com o jogador. Então fica a dica. Galera, nesse final de semana do dia 9 até o dia 12 de dezembro vai estar acontecendo a Ludundair. É uma game jam muito boa, o mundo inteiro participa e eu recomendo muito que vocês participem também. Então eu vou estar deixando o link na descrição e dê uma olhada lá. E como sempre qualquer dúvida que vocês tiverem sobre o vídeo pode deixar aí nos comentários que eu vou responder. E é isso aí gente. Continuem desenvolvendo e até semana que vem.