Qual è la differenza tra le classi Unity's Sprite e Texture2D?


19

Unity ha sia una Texture2Dclasse che una Sprite(con relative SpriteRenderer). Qual è la differenza tra queste due classi? Entrambi rappresentano un'immagine, per i giochi 2D dovrei privilegiare l'uno rispetto all'altro?

La differenza principale tra i due è che Spritenon ho bisogno di creare il quad "billboard" da solo? E che il Spriterendering è sempre direttamente contro la telecamera?

Risposte:


16

Hai ragione, un po '. Gli sprite, per impostazione predefinita, vengono resi direttamente contro la videocamera, tuttavia è possibile modificarlo facilmente se si utilizza lo Sprite Renderer in una scena 3D.

Gli sprite sono oggetti fisici nella tua scena, mentre Texture2D è esattamente quello che dice di essere. Una trama. Una trama deve essere attaccata a un materiale e il materiale a un oggetto di gioco (ad es. Un piano).

In Unity 3.x giorni non avevi il supporto dello sprite immediatamente pronto per l'uso, quindi dovevi spostare il tuo Sprite Manager / Class (o avevi la possibilità di acquistare un asset dal negozio di asset che ha tentato di porre rimedio a questo fastidio ). Unity non è mai stato pensato per supportare i giochi 2D (tuttavia gli sviluppatori hanno trovato il modo di realizzarlo), fino alla 4.x, quando gli sviluppatori Unity hanno finalmente fornito il supporto integrato per i giochi 2D (sprite, fogli sprite, fisica 2D).

Se stai facendo un gioco 2D, prova sempre a usare la classe Sprite. È meglio che lanciare il tuo e offre più che abbastanza.


AFAIK Spritesverrà anche automaticamente impacchettato in atlanti da Unity, se lo desideri.
Bummzack,

Questo è vero solo in Unity Pro,
truffatori

4
Credo che questo sia ora gratuito con Unity 5
Chris Hawkes

@ChrisHawkes In effetti lo è - solo per confermare l'affermazione :) - gli sprite possono essere impacchettati in atlanti (ed è pratica consigliata) tramite Window> Sprite Packer
AgentKnopf

6

Questi sono alcuni dei vantaggi che adoro di Sprite:

  1. Tutti gli SpriteRenderer utilizzano lo stesso materiale per impostazione predefinita, Sprite-Default anche se tutti hanno immagini / atlanti diversi, soddisfacendo così automaticamente una condizione del batch dinamico di Unity.
  2. Puoi applicare tinte di colore diverso (tramite l'ispettore SpriteRenderer) a ogni sprite anche se hanno tutti lo stesso materiale Sprite-Default. Ciò non è possibile nell'approccio basato su Texture2D la cui proprietà 'color' sarà legata al materiale. Questo è anche molto utile per sbiadire lo sprite tramite il valore alfa del colore.
  3. Supporta il batch dinamico con ridimensionamento non uniforme.
  4. Ha modalità singola / multipla in modo da poter afferrare ogni immagine come sprite separato dall'atlante delle trame con la modalità multipla.
  5. È possibile afferrare l'angolo di sprite nella vista scena per ridimensionarlo o ruotarlo senza cambiare in ridimensionare / ruotare lo strumento gizmo.

4
6. Unity genera automaticamente la geometria adatta ai contorni delle parti non trasparenti dello sprite. Ciò può ridurre il sovraccarico, rispetto al rendering dello stesso sprite di un quad, e consentire a te / Unity di impacchettare lo spritea più strettamente in un atlante.
DMGregory
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.