Como importar uma folha de sprites no Unity

Adicionar um PNG a um projeto Unity leva um segundo. Fazer com que ele seja renderizado como sprites nítidos, na escala correta e recortados corretamente exige cerca de seis configurações, e a maioria delas vem errada por padrão para trabalho em 2D. Veja o que cada uma faz, como recortar a folha no Sprite Editor e quando é mais rápido recortá-la antes mesmo de chegar ao Unity.

Comece por Texture Type

Selecione o PNG importado na janela Project e observe o Inspector. O primeiro menu suspenso é Texture Type, e seu valor padrão é Default — que é o caminho de textura 3D. Mude para Sprite (2D and UI).

Isso não é cosmético. Muda qual fluxo de importação é executado, mostra as opções de sprite abaixo e informa ao Unity que deve gerar um Sprite asset, em vez de um simples Texture2D. Sem isso, SpriteRenderer não tem nada para aceitar, e o botão Sprite Editor permanece desativado. Se o projeto foi criado com o modelo 2D, novas texturas já usam Sprite por padrão, então confira antes de procurar a configuração.

Lembre-se de pressionar Aplicar na parte inferior do Inspector. O Unity não aplica as configurações de importação de textura até você fazer isso, e as mudanças são desfeitas silenciosamente se você selecionar outro asset antes. Isso pega quase todo mundo pelo menos uma vez.

Sprite Mode: Single ou Multiple

Sprite Mode define se o arquivo é um sprite ou vários.

  • Único — a imagem inteira é um sprite. Use para quadros individuais já recortados em arquivos separados, fundos e imagens de interface.
  • Multiple — a imagem contém vários sprites, e você definirá seus retângulos no Sprite Editor. Use para uma folha real que queira manter como um único arquivo.
  • Polígono — gera uma malha personalizada, em vez de um quadrilátero. Raramente é o desejado para uma folha de sprites; existe principalmente para reduzir o desenho sobreposto em sprites grandes e majoritariamente transparentes.

Multiple é o modo que as pessoas escolhem por reflexo, mas vale parar para pensar. Manter uma folha significa uma textura, um lote de chamadas de desenho e um recurso para gerenciar. Separar em PNGs individuais significa configuração de animação mais simples, edições por quadro mais fáceis e nenhuma dependência de o Unity adivinhar os limites das células. Ambas as opções são válidas; o fator decisivo normalmente é se a folha tem uma grade confiável.

Recortando no Sprite Editor

Com Sprite Mode definido como Multiple, clique em Sprite Editor. Se o botão nem aparecer, o pacote 2D Sprite não está instalado — adicione-o em Window → Package Manager. Dentro do editor, o Recortar menu suspenso no canto superior esquerdo oferece três tipos.

Automático

O Unity procura ilhas de pixels não transparentes na textura e desenha um retângulo ao redor de cada uma. Em uma folha limpa, com espaços transparentes e sprites bem separados, isso funciona bem e leva um clique. Ele falha de forma previsível em três casos: sprites que se tocam ou se sobrepõem são unidos em um retângulo; um personagem com partes separadas (uma arma flutuante, uma sombra separada) é dividido em vários; e qualquer folha com fundo não transparente produz exatamente um retângulo cobrindo tudo, porque a imagem inteira é opaca.

O Method menu suspenso ao lado importa ao recortar novamente. Delete Existing apaga suas correções manuais; Smart tenta manter os retângulos que você ajustou; Safe apenas adiciona novos. Use Smart ou Safe depois de corrigir algo manualmente.

Uma folha de sprites de quatro por quatro de um patrulheiro da floresta com capuz verde e arco, em que todas as dezesseis poses têm tamanho consistente e espaços uniformes entre elas, sobre fundo transparente
Uma folha regular o suficiente para os tipos de recorte em grade abaixo. Tamanhos de sprite consistentes, separações uniformes, fundo transparente — as condições que Grade por tamanho de célula pressupõe e que uma exportação gerada por ferramenta oferece automaticamente.

Grade por tamanho de célula

Você informa largura e altura em pixels, e o Unity coloca uma grade sobre a textura. Essa é a escolha certa quando você sabe o tamanho da célula — uma folha de 512×512 com tiles de 64×64, por exemplo. Os campos Offset e Padding trabalham com folhas que têm margem nas bordas ou espaço entre células. Defina-os uma vez e todas as células ficarão corretas, porque uma folha gerada por ferramenta realmente é uma grade.

Grade por quantidade de células

A mesma ideia, mas você informa colunas e linhas, e o Unity faz a divisão. É prático quando você sabe que a folha é 4×4, mas ainda não fez as contas. Cuidado com texturas cujas dimensões não se dividem exatamente: 1024 dividido por 3 é 341,33, e o arredondamento aparece como uma faixa de um pixel do sprite vizinho ao longo de uma borda de cada célula.

O pivô importa mais do que parece. Cada tipo de recorte tem um menu Pivot. Para personagens que ficam em pé no chão, Bottom normalmente é o correto — mantém os pés no chão quando a altura dos quadros varia. Para projéteis e efeitos, Center. Você também pode definir Custom e digitar coordenadas normalizadas. Errar isso é a causa mais comum de animações que parecem oscilar ou deslizar.

Pixels por unidade e o que isso realmente significa

Pixels Per Unit (PPU) é a taxa de conversão entre os pixels da textura e as unidades de mundo do Unity. O padrão é 100, ou seja, um sprite de 100×100 pixels ocupa exatamente um quadrado de uma unidade de mundo na escala 1.

As unidades de mundo do Unity são abstratas, mas física, tamanhos de câmera e velocidades de movimento são expressos nelas, então o número escolhido define a escala de todo o jogo. Duas convenções comuns:

  • PPU = tamanho do tile do seu sprite. Se seus tiles têm 16×16 pixels, defina PPU como 16, e um tile equivalerá a uma unidade de mundo. Os tilemaps se alinham em coordenadas inteiras, e uma gravidade de −9.81 passa a ter um significado aproximadamente físico.
  • PPU = 100 para tudo. Mais simples se sua arte tiver alta resolução e você não estiver usando movimento baseado em tiles.

O importante é a consistência. Sprites importados com valores de PPU diferentes aparecerão em escalas diferentes entre si, e a solução que as pessoas costumam usar — ajustar a escala de Transform em objetos individuais — esconde o problema e dificulta entender colisores, física e reutilização de prefabs. Em vez disso, defina o PPU corretamente na importação.

Filter Mode e compressão para pixel art

Duas configurações decidem se sua pixel art parece pixel art ou uma mancha borrada.

Filter Mode usa por padrão Bilinear, que interpola entre texels quando um sprite é desenhado em qualquer proporção diferente de 1:1. Em texturas fotográficas, é isso que você quer. Em um personagem de 32×32, produz bordas suaves e pouco definidas. Defina como Point (no filter) para pixel art, e os limites dos pixels continuam definidos.

Compression usa Normal Quality por padrão, o que na maioria das plataformas significa um formato de compressão por blocos. Essa compressão aproxima grupos de pixels e, em arte de cores chapadas com bordas definidas, os artefatos são óbvios — halos coloridos ao redor dos contornos, especialmente perto da transparência. Defina Compression como None para sprites de pixel art. Sim, a textura ocupa mais memória; algumas folhas pequenas de sprites sem compressão têm impacto insignificante em qualquer orçamento moderno de memória, mas a diferença visual não.

Desmarque também Generate Mip Maps para sprites 2D sempre desenhados perto do tamanho original. Mipmaps existem para texturas vistas a distâncias variadas em 3D; em 2D, principalmente consomem memória e às vezes fazem sprites amostrarem um nível mais borrado que o pretendido.

ConfiguraçãoPixel artAlta resolução / 2D pintado
Texture TypeSprite (2D and UI)Sprite (2D and UI)
Filter ModePoint (no filter)Bilinear
CompressãoNenhumQualidade normal
Generate Mip MapsDesativadoDesativado para 2D, ativado se houver grande variação de escala
Pixels por unidadeTamanho do tile (8, 16, 32…)100
Max SizePelo menos a maior dimensão da folhaPelo menos a maior dimensão da folha
Confira Max Size se o sprite parecer pouco nítido sem motivo. O Unity limita texturas importadas a 2048 por padrão em algumas abas de plataforma. Uma folha de 4096 de largura é reduzida silenciosamente para 2048, cortando a resolução pela metade antes de qualquer configuração acima ser aplicada.

Arquivos já recortados versus recorte no Unity

O recortador do Unity é bom naquilo para que foi criado: folhas produzidas por uma ferramenta, em uma grade real, com espaços transparentes. Grid By Cell Size em uma exportação do Aseprite é exato e instantâneo, e não há motivo para fazer isso em outro lugar.

Folhas de geradores de imagem são outro problema. Ao receber um pedido de "folha de sprites 4×4", um modelo produz algo que se parece com uma grade sem ser uma: o espaçamento varia alguns pixels por célula, os tamanhos dos sprites mudam com a pose e o conteúdo de cada suposta célula fica fora do centro. Grid By Cell Size corta cabeças. Automatic une os dois quadros que por acaso se tocam e divide o que tem um escudo separado. Então você arrasta manualmente dezesseis retângulos no Sprite Editor, uma maneira lenta de gastar vinte minutos.

Recortar a folha antes de importar evita isso. Nosso Recortador de folhas de sprites encontra os limites dos sprites pelo canal alfa, não por coordenadas presumidas, apara cada quadro até seu próprio conteúdo e exporta PNGs individuais. Eles entram no Unity como Sprite Mode Single sem nenhum trabalho no Sprite Editor. Se a detecção automática não acertar, a aba Manual e predefinições permite arrastar cada linha de grade para o espaço correto — seis movimentos para uma folha de dezesseis quadros, em vez de dezesseis retângulos.

Há uma contrapartida real. Arquivos avulsos significam mais assets e, sem um Sprite Atlas, mais chamadas de desenho. Se isso importar no seu projeto, recorte externamente para obter quadros corretos e depois adicione um Sprite Atlas asset (Assets → Create → 2D → Sprite Atlas) e solte a pasta na lista Objects for Packing. Você obtém limites corretos e renderização em lotes, com o Unity fazendo o empacotamento em que realmente é bom.

De sprites a uma animação

  1. Selecione os quadros em ordem na janela Project — os subsprites de uma folha recortada ou seus PNGs individuais.
  2. Arraste a seleção para Scene ou Hierarchy. O Unity solicita um local para salvar e cria um Animation Clip e um Animator Controller conectado a ele.
  3. Abra a janela Animation para ajustar a taxa de amostragem. O padrão de 12 amostras por segundo funciona bem para muitos ciclos de caminhada; 24 deixa o movimento mais suave; valores de um dígito dão um aspecto retrô intencionalmente entrecortado.
  4. Confirme que os quadros estão na ordem correta. O Unity ordena por nome, então frame_10 fica entre frame_1 e frame_2 a menos que você complete com zeros à esquerda para frame_01.
  5. Para mais clipes, repita o processo e conecte as transições no Animator, ou controle os quadros diretamente por script se preferir não usar o Animator.

Perguntas frequentes

Por que meu sprite tem uma linha fina do quadro vizinho em uma borda?

Vazamento de textura. O tamanho da célula não divide a textura exatamente, ou a filtragem bilinear está amostrando além do limite do retângulo. Defina Filter Mode como Point, desative a compressão e confira o cálculo das células. Adicionar um ou dois pixels de espaçamento transparente entre sprites na folha de origem evita isso de forma permanente.

Devo usar Sprite Atlas ou uma folha grande?

Sprite Atlas, na maioria dos casos. Ele permite criar sprites como arquivos separados — fáceis de editar e reordenar — enquanto o Unity os empacota em uma textura compartilhada durante a compilação para processamento em lotes. Uma megafolha feita à mão dá resultados semelhantes em execução, mas é muito menos prática sempre que um quadro muda.

Minha animação é reproduzida, mas o personagem treme para cima e para baixo. Por quê?

Quadros de alturas diferentes compartilhando um pivô Center. Defina o pivô como Bottom ou adicione preenchimento a todos os quadros até terem dimensões idênticas antes de importar, para que o conteúdo fique em uma posição consistente em cada quadro.

Preciso alterar alguma coisa para o Universal Render Pipeline?

As configurações de importação são as mesmas. O que muda é o material: URP 2D usa Sprite-Lit-Default quando o 2D Renderer está ativo, o que significa que sprites sem iluminação podem aparecer pretos até haver uma luz na cena. Troque o material do SpriteRenderer para Sprite-Unlit-Default ou adicione uma Global Light 2D.

Recorte a folha antes de levá-la ao Unity

Se o recorte automático do Unity não funciona bem com sua folha, recorte-a primeiro no navegador e importe PNGs individuais limpos. Magic Slice detecta os limites dos sprites pelo canal alfa; Manual e predefinições permite arrastar as linhas manualmente. Nada é enviado — tudo funciona localmente.

Abrir Recortador de folhas de sprites