Aqui está a documentação correspondente do Unity .
De acordo com as explicações das páginas de documentação do Unity sobre os Static GameObjects, às vezes marcar GameObjects como estático pode afetar o desempenho de maneira ruim (por exemplo, Static Batching causa mais uso de memória) .
Então, quando devo exatamente querer usar essas funcionalidades?
Desde já, obrigado.
Notas de rodapé:
Atualmente, estou desenvolvendo um jogo 2D de cima para baixo, com muitos Sprites e LineRenderers, mas sem objetos 3D (nem mesmo um quad). Todos os GameObjects estão sendo instanciados proceduralmente a partir de pré-fabricados pré-fabricados. Os LineRenderers são atualizados a partir dos scripts de cada quadro. E quase todos os Sprites estão se movendo constantemente. A maioria dos Sprites compartilha o mesmo material. Todos os LineRenderers também compartilham o mesmo material.
fonte
Respostas:
Não existe uma regra rígida sobre quando você deve ou não tornar o GameObjects estático.
No mínimo, faça-o apenas para objetos que nunca se moverão durante a vida. Mas você precisa saber o que faz para avaliar se deve ou não.
Congela a malha nos dados da cena, para que você não tenha a sobrecarga do GameObject para o item. Isso significa um aumento no desempenho com o custo de alterar os dados da cena no tempo de construção e um custo extra de memória para o aplicativo final construído.
Isso é bom em muitos casos, embora possa causar problemas, por exemplo, com florestas. Além disso, significa que, em vez de armazenar os verts para a árvore uma vez e as cópias de desenho da GPU, ele deve duplicá-los em todo o lugar. Isso leva tempo durante a compilação e espaço no aplicativo. Nosso aplicativo passou de 3-4 GB para 300-400 MB quando tornamos as árvores não estáticas. O tempo de construção passou de 3-4 horas para 1 hora.
Tendo dito tudo isso! Seu jogo é 2d e provavelmente se beneficiaria da definição de GameObjects nas cenas como estáticas, desde que você não tenha muitos deles.
fonte
Se eu disser em geral, tudo o que nunca se moverá (nem mesmo um pixel) em toda a vida do aplicativo deve ser marcado como estático. Geralmente é útil para assar luzes, caminhos de navmesh, etc.
Bem, se você estiver desenvolvendo sem objetos 3D, relaxe e se refresque. Não precisa se preocupar com renderização em tempo real, sombras ou outros problemas. Mesmo apagar a única luz vem com nova cena;)
Bem, qualquer um pode me corrigir se eu estiver errado em qualquer lugar.
fonte