Estou pesquisando a documentação do recurso Tilemap do Unity 2017.2.
O Unity limita o número máximo de blocos que ele suporta para uma malha de mapa de blocos específica?
Eu sei que cada bloco é instanciado uma vez e usado para texturizar os quadríceps na malha Tilemap em tempo de execução, portanto, eu acho que o limite de contagem de quadras de malha depende em última análise do hardware e mais ou menos é arbitrariamente alto.
Essa é uma suposição correta ou existe uma tampa rígida no mecanismo?
Respostas:
Sua RAM é o seu limite .
Os seguintes testes foram realizados em um sistema com essas especificações:
Aqui está um script que eu executei que aumenta um mapa de blocos, preenchendo-o com um único bloco (32 x 32 pixels). O método
Grow()
adiciona outra coluna e outra linha ao mapa atual. O método é chamado 100 vezes a cada atualização.Depois de alguns minutos, meu computador ficou sem memória e o Unity travou. Nesse ponto, ele estava em 8400x8400 (70 milhões) de blocos e o Unity.exe estava consumindo um pouco acima de 11 GB de RAM, de acordo com o gerenciador de tarefas.
Bem, mas e os mapas esparsos ?
Aqui está um script diferente que colocou um único bloco no aumento das coordenadas x e y em incrementos de 100 blocos:
A pegada de memória do Unity.exe na verdade aumentou muito pouco, o que sugere que as células vazias do conjunto de peças quase não requerem RAM. No entanto, o FPS continuou caindo à medida que o conjunto de peças crescia. Atingiu 60 Fps em 30000x30000, 30 Fps em 60000x60000 e 15 Fps em 90000x90000. Os Fps permaneceram baixos quando removi o script enquanto o jogo de teste estava em execução. Portanto, essa desaceleração não foi causada pela alteração do mapa de blocos. Foi simplesmente por renderizá-lo. Portanto, quando você deseja criar um jogo de mundo aberto realmente enorme, talvez seja necessário usar vários mapas de peças menores, criados e destruídos em tempo de execução.
Conclusões: mapas de tile enormes, mas geralmente vazios, não usam muita RAM, mas são um gargalo de renderização , mesmo quando a maioria não está na janela de exibição da câmera.
Então experimentei esse script que gera mapas de telha com um determinado tamanho:
Eu usei esse script para gerar um mapa de 8192x8192. Demorou alguns minutos, mas quando o script foi concluído, ele funcionava a 95 Fps.
Conclusão: Mapas com milhões de blocos são viáveis, pelo menos em PCs para jogos .
fonte
Update
método durante a geração, o jogo e o editor do Unity congelam até a geração terminar. Se você deseja que seu jogo seja responsivo durante a geração do mapa, mova a geração para uma corotina que gere um pedaço de cada vez e ceda entre eles.