Qual é a diferença entre as classes Sprite e Texture2D do Unity?

19

A unidade tem uma Texture2Dclasse e uma Sprite(com relacionadas SpriteRenderer). Qual é a diferença entre essas duas classes? Ambos representam uma imagem, para jogos 2D eu devo preferir um ao outro?

É a principal diferença entre os dois que usando Sprite eu não preciso criar o quad "outdoor"? E que o Spriteé sempre renderizado diretamente contra a câmera?

Kobald
fonte

Respostas:

16

Você está correto - um pouco. Os sprites, por padrão, são renderizados diretamente contra a câmera, no entanto, você pode facilmente mudar isso se estiver usando o Sprite Renderer em uma cena 3D.

Sprites são objetos físicos em sua cena, enquanto Texture2D é exatamente o que diz. Uma textura Uma textura deve ser anexada a um material e o material a um objeto de jogo (por exemplo, um avião).

De volta ao Unity 3.x dias, você não tinha suporte imediato para sprite, então teve que lançar seu próprio Sprite Manager / Class (ou teve a opção de comprar um ativo na loja de ativos que tentou remediar esse aborrecimento ) O Unity realmente nunca foi concebido para suportar jogos 2D (no entanto, os desenvolvedores encontraram maneiras de fazer isso acontecer), até a 4.x, quando os Unity Developers finalmente forneceram suporte interno para jogos 2D (sprites, folhas de sprite, física 2D).

Se você estiver fazendo um jogo 2D, sempre tente usar a classe Sprite. É melhor do que criar o seu próprio e oferece mais do que suficiente.

Cinzento
fonte
O AFAIK Spritestambém será compactado automaticamente em atlas pelo Unity, se você desejar.
bummzack
Isso é verdade apenas no Unity Pro,
buggers
4
Eu acredito que este é agora livre com Unidade 5
Chris Hawkes
@ChrisHawkes Na verdade, é - apenas para confirmar a declaração :) - sprites pode ser embalado em atlas (e é recomendável prática) via Window> Sprite Packer
AgentKnopf
6

Essas são algumas das vantagens que eu amo no Sprite:

  1. Todos os SpriteRenderer usam o mesmo material por padrão, Sprite-Padrão, mesmo que todos tenham diferentes imagens / atlas, satisfazendo assim uma condição do lote dinâmico do Unity automaticamente.
  2. Você pode aplicar tonalidades de cores diferentes (por meio do inspetor do SpriteRenderer) a cada sprite, mesmo que todos tenham o mesmo material padrão do Sprite. Isso não é possível na abordagem baseada no Texture2D, cuja propriedade 'cor' será vinculada ao material. Isso também é muito útil para diminuir o sprite através do valor alfa da cor.
  3. Oferece suporte a lotes dinâmicos com escala não uniforme.
  4. Possui modo único / modo múltiplo para que você possa capturar cada imagem como sprite separado do seu atlas de textura com o modo múltiplo.
  5. Você pode pegar o canto do sprite na vista da cena para dimensioná-lo ou girá-lo sem alterar a ferramenta de dimensionar / girar dispositivos.
5argon
fonte
4
6. O Unity gera automaticamente a geometria ajustada aos contornos das partes não transparentes do sprite. Isso pode reduzir o excesso de extração, em comparação com a renderização do mesmo sprite que um quad, e permitir que você / Unity empacote a spritea com mais força em um atlas.
DMGregory