Diferentes estratégias para acessar nodes em uma cena na Godot

Поділитися
Вставка
  • Опубліковано 3 жов 2024
  • Constantemente em um jogo, nós estamos acessando nodes pela programação para atingir algum objetivo no nosso jogo. No vídeo de hoje, eu irei mostrar para vocês algumas das estratégias que temos ao nosso dispor na Godot Engine, e para cada alternativa que abordamos, também iremos falar das vantagens e desvantagens.
    Precisa de consultoria ou atendimento particular?
    Email de contato: gustavolr035@gmail.com
    #godot #godotengine #godot4

КОМЕНТАРІ • 12

  • @pbarrosramon
    @pbarrosramon Місяць тому +3

    Fala Guará!
    Mais um vídeo muito ótimo! Também considero utilizar o @export como a melhor forma de acessar nodes filhos.
    Porém um ponto importante que eu vejo que muita gente ignora é: acessar métodos dos filhos através do próprio pai não é o padrão que os criadores da Godot desenharam para a Engine. Por exemplo: filho.método(). O padrão ideal seria o próprio filho processar o que precisa no seu próprio script e - se precisar - chamar métodos do pai através de get_parent().métodoDoPai() ou owner.métodoDoPai(), que é muito menos custoso computacionalmente. Ou mesmo, o filho "avisar" o pai através dos SIGNALS para que o pai faça o processamento necessário.
    Entender isso foi um divisor de águas pra mim, e hoje eu faço bem menos referências aos nodes filhos, tendo em vista que eu posso conectar os signals na própria IDE, e pelo fato de cada filho fazer a sua devida responsabilidade.
    Abraço.

  • @tota5
    @tota5 Місяць тому +2

    simplismente fantástico! Aprendi muito!

  • @giogio-xs5qc
    @giogio-xs5qc Місяць тому +2

    massa d+

  • @palhacoxato
    @palhacoxato Місяць тому +1

    Nossa eu quebrando a cabeça aqui de madrugada, aí seu vídeo me deu a resposta que eu precisa manooooo, valeuuu ❤

  • @eric_brito
    @eric_brito Місяць тому +2

    Legal que export e findChild são semelhantes a serializar e find da Unity. Que possuem as mesmas vantagens e desvantagens. Tem ainda algumas pessoas mais preocupadas com a escalabilidade, que preferem find e não gostam de serializar, para não criar dependências e tal, enquanto tem outros que dizem para não usar find nunca pq é pesado kkk.
    Me bateram 2 dúvidas:
    É mais leve usar grupos ou layers para detectar os triggers (Áreas 2D na Godot)?
    Essas strings em argumentos ou ifs, tipo essa de grupos não pesam no desempenho não? Se é melhor converter antes para hash e tals.

    • @guaraprogramador
      @guaraprogramador  Місяць тому +1

      Opa fala ai meu claro. Pois é, essas semelhanças em design é bem comum no mundo das game engines. Sobre as suas perguntas:
      1. É mais leve usar grupos ou layers para detectar os triggers (Áreas 2D na Godot)?
      Esses dois tem propósitos diferentes e a escolha depende do contexto. Layers são para categorizar objetos para verificação de colisão, e "grupos" são usados para categorizar nodes de uma maneira que você pode chamar métodos ou aplicar mudanças simultâneas.
      2. Essas strings em argumentos ou ifs, tipo essa de grupos não pesam no desempenho não? Se é melhor converter antes para hash e tals.
      Vai ter um impacto não muito notável em desempenho na minha opinião, só em casos muito específicos que desempenho for absolutamente crítico que você vai preocupar com isso. No geral, usar Strings é perfeitamente aceitável, e talvez mais legível em código.

    • @eric_brito
      @eric_brito Місяць тому +1

      Agradeço as dicas. Isso me lembrou algo interessante sobre desempenho que vi no CodeMonkey e num forum, que são as três formas de obter um alvo: trigger, overlap ou distancia da entidade via script. Há algumas coisas interessantes como a forma do colisor, o tipo de cálculo (as operações e a quantidade de condicionais desse cálculo) afetando no desempenho. Seria legal se um dia vc quiser abordar isso, pois é bastante usado nas detecções de inimigos e interações.

  • @DARKLEGIONS-l8m
    @DARKLEGIONS-l8m Місяць тому +5

    Oi mano infelizmente desistir da godot so futuramente eu voltarei agora eu vou foca mais na pixel art e eu sou o Dark

    • @guaraprogramador
      @guaraprogramador  Місяць тому +2

      Foque em uma coisa por vez meu caro, é mais fácil do que tentar aprender tudo de uma vez só.

    • @YamiDev784
      @YamiDev784 26 днів тому

      Se vc é o Dark eu sou a luz

  • @fmdashlevelcreatordev
    @fmdashlevelcreatordev Місяць тому +2

    Ei man me tire uma dúvida: Criei uma Area2D e esta area está conectada ao meu characterbody onde se o player (CharacterBody) entrar na area ele irá enviar um sinal chamado "player_entered" só que queria saber qual é o melhor método para o Nó conseguir receber este sinal sendo que o mesmo está em outra cena. Tentei usa o getnode mas tou tendo problemas na versão mobile. Por que pelo que vi não posso realizar conexões se os mesmos nós não tiverem na mesma cena.
    Explicando melhor: O nó que irá receber este sinal está em outra cena do tipo Control.
    Mas quero um método que não irá afetar ou sobrecarregar o desempenho do meu projeto ou da própria engine ensi

    • @guaraprogramador
      @guaraprogramador  Місяць тому

      Fala ai meu caro, então eu quero primeiro ver se eu entendi o seu problema, você simplesmente quer conectar esse sinal "player_entered", em cenas diferentes. Nesse caso, como você até mencionou o Control (que é o nó de interface) então minha sugestão é você usar o export. Assumindo que você consegue interagir tanto com o Control e a Area2D direto pelo editor, você pode usar um export pra poder especificar qual node vai receber a conexão, e ai por código é só você conectar o sinal, e ai garantindo que um node foi selecionado pelo editor, então a conexão será garantida.
      Lembrando que essa é a minha hipótese baseado na sua pergunta, eu não sei qual é o contexto que o seu jogo está e por isso essa é a primeira ideia que me vem a cabeça. Qualquer coisa, faz essa pergunta novamente no servidor do discord do canal que ai lá a gente até consegue te ajudar melhor