Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Quando e como evitar o uso de nós para tudo

Nós são baratos de produzir, mas até eles têm os seus limites. Um projeto pode ter dezenas de milhares de nós fazendo coisas. Quanto mais complexo for o seu comportamento, maior será a tensão que cada um adiciona ao desempenho de um projeto.

O Godot fornece objetos mais leves para a criação de APIs que os nós usam. Lembre-se de ter isso em mente como opções ao projetar como deseja construir os recursos do seu projeto.

  1. Object: O supremo objeto leve, o Objeto original deve usar gerenciamento manual de memória. Dito isso, não é muito difícil criar suas próprias estruturas de dados personalizadas, mesmo estruturas de nós, que também são mais leves que a classe Node.

    • Exemplo: Veja o nó Tree. Ele suporta um alto nível de personalização para uma tabela de conteúdo com um número arbitrário de linhas e colunas. Os dados que ele utiliza para gerar sua visualização são na verdade uma árvore de Objetos TreeItem.

    • Vantagens: A simplificação da API para objetos com escopo menor ajuda a melhorar sua acessibilidade e melhorar o tempo de iteração. Ao invés de trabalhar com toda a biblioteca de Nós, cria-se um conjunto abreviado de Objetos a partir dos quais um nó pode gerar e gerenciar os sub-nós apropriados.

    Nota

    Deve-se ter cuidado ao manuseá-los. É possível armazenar um Objeto em uma variável, mas essas referências podem se tornar inválidas sem aviso prévio. Por exemplo, se o criador do objeto decidir excluí-lo do nada, isso acionaria um estado de erro no próximo acesso.

  2. RefCounted: Only a little more complex than Object. They track references to themselves, only deleting loaded memory when no further references to themselves exist. These are useful in the majority of cases where one needs data in a custom class.

    • Example: See the FileAccess object. It functions just like a regular Object except that one need not delete it themselves.

    • Vantagens: o mesmo que o Objeto.

  3. Resource: Only slightly more complex than RefCounted. They have the innate ability to serialize/deserialize (i.e. save and load) their object properties to/from Godot resource files.

    • Exemplo: Scripts, PackedScene (para arquivos de cena), e outros tipos como cada uma das classes AudioEffect. Cada uma delas pode ser salva e carregada, portanto elas se estendem de Resource.

    • Advantages: Much has already been said on Resource's advantages over traditional data storage methods. In the context of using Resources over Nodes though, their main advantage is in Inspector-compatibility. While nearly as lightweight as Object/RefCounted, they can still display and export properties in the Inspector. This allows them to fulfill a purpose much like sub-Nodes on the usability front, but also improve performance if one plans to have many such Resources/Nodes in their scenes.