Coleção de pontos de conhecimento da entrevista do Unity - Otimização de desempenho do Unity

1. O que é LOD, quais são as vantagens e desvantagens

A tecnologia LOD é a abreviação de Levels of Detail, que significa vários níveis de detalhe. A tecnologia LOD refere-se a determinar a alocação de recursos de renderização de objetos de acordo com a posição e importância dos nós do modelo de objeto no ambiente de exibição, reduzindo o número de faces e detalhes de objetos não importantes, de modo a obter operações de renderização eficientes.

Vantagens: Modelos com detalhes diferentes podem ser selecionados dinamicamente para renderizar de acordo com a distância
Desvantagens: Aumenta a carga dos artistas, e o mesmo modelo com detalhes diferentes precisa ser preparado, o que também aumentará um pouco a capacidade do jogo.

2. O que é o MipMap? efeito?

Uma técnica comumente usada na renderização de textura de gráficos de computador 3D é chamada de Mipmapping. Para acelerar a renderização e reduzir o aliasing da imagem, as texturas são processadas em arquivos que consistem em uma série de imagens pré-computadas e otimizadas, chamadas de mapas MIP ou mipmaps.

3. Quando um objeto precisa ser criado com frequência no jogo, o que precisamos fazer para economizar memória.

Faça um pool, instancie um número suficiente no início do jogo e, em seguida, pegue-o de volta quando for usado

4. Como otimizar a memória?

Existem muitas maneiras, como
1. Compactar a biblioteca de classes interna;
2. Ocultar os objetos que precisam ser usados ​​no futuro em vez de destruí-los diretamente;
3. Liberar os recursos ocupados pelo AssetBundle;
4. Reduzir o número unilateral do modelo, reduza o número de ossos no modelo, reduza o tamanho do mapa
5. Use mapas de luz, use detalhes de vários níveis (LOD), use shaders (Shader), use presets (Prefab).

5. Como carregar recursos dinamicamente? e diferença

1. Através do módulo Resources, chame sua função load: você pode carregar e retornar diretamente um determinado
tipo de objeto, desde que o recurso seja colocado na pasta chamada Resource, o Unity
irá carregá-lo independente de haver uma referência de cena ou não .Tudo no pacote de instalação. Recursos.Carregar();

2. Na forma de pacote: ou seja, coloque o recurso em um pacote de ativos e coloque-o no servidor ou
disco local, use o módulo WWW para obtê-lo e carregue um objeto desse pacote.

AssetBundle
3. Através do AssetDatabase.loadasset: Este método só é válido dentro do escopo do editor,
não existe tal função quando o jogo está rodando, geralmente é usado para depuração em desenvolvimento [Banco de recursos AssetDatabase
]

Diferença: O método de Resources precisa colocar todos os recursos no pacote de instalação, o que não é bom para o
lançamento do sub-pacote (micro-end) e atualização de versão (patch) do jogo, então o método recomendado do Unity
não A maneira de substituir o recurso
e façamos diferentes implementações em diferentes ambientes.

Armazenamento de recursos dinâmicos
Às vezes preciso armazenar alguns arquivos próprios no disco, por exemplo, quero colocar vários bundles
na instalação inicial. O Unity tem um conceito de streaming assets para fornecer
acesso à interface de armazenamento. Precisamos criar uma pasta com o nome de StreamingAssets no editor
, e colocar os arquivos dinâmicos que precisam ser colocados no disco do cliente nesta pasta.Após a
instalação, esses arquivos serão colocados no local especificado do disco do usuário. Esse local pode ser acessado por meio
de Application.streamingAssetsPath para obter.

6. Descreva brevemente o princípio do agrupamento de objetos e quando usá-lo?

A ideia por trás do pool de objetos é bem simples.
Em vez de instanciar um novo objeto a cada vez, armazenamos objetos em um pool e os reutilizamos quando necessário. A característica mais importante do pooling, e a essência do padrão de projeto do pooling de objetos, é que ele nos permite obter um "novo" objeto independentemente de ser realmente um objeto novo ou um objeto reciclado.

Os pools de objetos geralmente são usados ​​para objetos que precisam ser criados e destruídos com frequência, como mobs em nossa cena, que geralmente precisam ser criados e destruídos. Quando os mobs são destruídos, em vez de realmente destruí-los, coloque-os em Digite o objeto pool e espere até a próxima vez que precisarmos criar mobs e, em seguida, retire-o do pool de objetos.

7. Quais são os benefícios de usar mipmaps? Em que circunstâncias é usado?

A tecnologia de textura Mipmap é atualmente a maneira mais eficaz de resolver a relação entre a resolução da textura e a distância do ponto de vista. Ela primeiro compactará a imagem em muitas imagens gradualmente reduzidas, como uma imagem 64 64, que gerará 64 64, 32 32 , 16 16 , 7 fotos de 8 , 4 4 , 2 2 , 1 1, quando o pixel precisa ser desenhado na tela é 20 20, o programa usa apenas as duas fotos de 32 32 e 16 16 para calcular o tamanho de 20 20 que será exibida Uma imagem, que é muito melhor e mais rápida do que a imagem calculada usando apenas a peça original de 32*32.

8. Otimização da memória da unidade? Coleta de lixo do GC

Introdução ao mecanismo de gerenciamento de memória da unidade

O Unity adota principalmente o mecanismo de gerenciamento automático de memória. Durante o desenvolvimento, não é necessário informar ao Unity como executar o gerenciamento de memória em detalhes no código. O próprio Unity executará o gerenciamento de memória. Comparado com a necessidade de gerenciar a memória a qualquer momento no desenvolvimento C++, isso tem algumas vantagens, claro, a desvantagem é que você precisa prestar atenção ao crescimento da memória a qualquer momento.

O gerenciamento automático de memória do Unity pode ser entendido como as seguintes partes:

1. O Unity tem dois pools de gerenciamento de memória: memória heap e memória de pilha. A memória de pilha (stack) é usada principalmente para armazenar dados pequenos e de curta duração, e a memória de heap (heap) é usada principalmente para armazenar dados grandes e de longo prazo.

2. Variáveis ​​em unidade serão alocadas apenas na pilha ou memória heap, variáveis ​​do tipo valor são alocadas na pilha e outros tipos de variáveis ​​são alocados no heap.

3. Enquanto a variável estiver ativa, a memória ocupada por ela será marcada como usada, e a memória desta parte ficará no estado alocado.

4. Uma vez que a variável não é mais ativada, a memória ocupada por ela não é mais necessária e essa parte da memória pode ser reciclada no pool de memória para reutilização.Essa operação é a reciclagem de memória. A memória na pilha é recuperada muito rapidamente, a memória no heap não é recuperada a tempo e a memória correspondente ainda será marcada como usada.

5. A coleta de lixo refere-se principalmente à alocação e reciclagem de memória no heap.Unity executará regularmente operações de GC na memória do heap.

Introdução ao GC (coleta de lixo)

Quando o jogo está em execução, os dados são armazenados principalmente na memória. Quando os dados do jogo não são necessários, a memória que armazena os dados atuais pode ser reciclada para reutilização. O lixo de memória refere-se à memória ocupada por dados atualmente descartados, e a coleta de lixo (GC) refere-se ao processo de recuperação de memória descartada para reutilização.

No Unity, a coleta de lixo é considerada parte do gerenciamento de memória. Se os dados descartados no jogo ocuparem uma grande quantidade de memória, o desempenho do jogo será bastante afetado. Neste momento, a coleta de lixo se tornará um grande obstáculo para desempenho do jogo.

9. Como resolver o problema de congelamento causado pela criação e exclusão excessiva de objetos

Pool de objetos, armazenar em cache objetos não utilizados em uma lista de objetos

10. Existem várias maneiras de carregar recursos do Unity, descreva brevemente o pacote de ativos

  1. Publicar um objeto diretamente no script e atribuí-lo no painel do monitor
  2. encontre diretamente no programa
  3. Recurso.carregar
  4. Digite o recurso no Assetbudle e, em seguida, carregue-o no
    assetbundle ao usá-lo, que é o empacotamento do recurso. Ao mesmo tempo, esse formato de recurso é fácil de baixar da Internet.

11. Existem apenas 20 grades no sistema de mochila, e agora há um total de 100 objetos. Exceto pelos 20 exibidos no campo de visão, quais são os outros métodos de processamento? (Nota: não é viável ocultar outros, o pool de objetos deve ter instruções específicas)

  1. Cada entrada de rolagem é uma instância da mesma predefinição
  2. Para cache, desde que a entrada de rolagem dentro do campo de visão seja instanciada, a parte além do campo de visão será preenchida automaticamente até a parte inferior do campo de visão.

Acho que você gosta

Origin blog.csdn.net/m0_48781656/article/details/123371544
Recomendado
Clasificación