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?
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.
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:
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.
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.
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.
Sprites
também será compactado automaticamente em atlas pelo Unity, se você desejar.Essas são algumas das vantagens que eu amo no Sprite:
fonte