¿Cuál es la diferencia entre las clases Sprite y Texture2D de Unity?

19

La unidad tiene tanto una Texture2Dclase como un Sprite(con relacionados SpriteRenderer). ¿Cuál es la diferencia entre estas dos clases? Ambos representan una imagen, para los juegos en 2D, ¿debería preferir uno sobre el otro?

¿Es la principal diferencia entre los dos que usar Spriteyo no necesito crear el quad "billboard"? ¿Y que el Spritesiempre se representa directamente contra la cámara?

Kobald
fuente

Respuestas:

16

Tienes razón, algo. Los Sprites, de forma predeterminada, se representan directamente contra la cámara, sin embargo, puede cambiar esto fácilmente si está utilizando Sprite Renderer en una escena 3D.

Los sprites son objetos físicos en tu escena, mientras que Texture2D es exactamente lo que dice que es. Una textura Se debe unir una textura a un material y el material a un objeto de juego (por ejemplo, un plano).

De vuelta en Unity 3.x días, no tenía soporte de Sprite de inmediato, por lo que tuvo que lanzar su propio Sprite Manager / Class (o tenía la opción de comprar un activo de la tienda de activos que intentó remediar esta molestia ) Unity nunca tuvo la intención de admitir juegos 2D (sin embargo, los desarrolladores encontraron formas de hacerlo realidad), hasta 4.x, cuando los Desarrolladores de Unity finalmente proporcionaron soporte integrado para juegos 2D (sprites, hojas de sprites, física 2D).

Si estás haciendo un juego en 2D, siempre trata de usar la clase Sprite. Es mejor que rodar el tuyo y ofrece más que suficiente.

Gris
fuente
AFAIK Spritestambién será empaquetado automáticamente en atlas por Unity si lo desea.
bummzack
Eso solo es cierto en Unity Pro, bichos complicados
jhocking el
44
Creo que ahora es gratis con Unity 5
Chris Hawkes
@ChrisHawkes De hecho, es solo para confirmar la declaración :): los sprites se pueden empaquetar en atlas (y es una práctica recomendada) a través de Window> Sprite Packer
AgentKnopf
6

Estas son algunas de las ventajas que me encantan de Sprite:

  1. Todos los SpriteRenderer usan el mismo material por defecto, Sprite-Default, aunque todos tienen diferentes imágenes / atlas, por lo que satisfacen automáticamente una condición del procesamiento por lotes dinámico de Unity.
  2. Puede aplicar un tinte de color diferente (a través del inspector de SpriteRenderer) a cada sprite aunque todos tengan el mismo material predeterminado de Sprite. Esto no es posible en el enfoque basado en Texture2D cuya propiedad 'color' estará vinculada al material. Esto también es muy útil para desvanecer sprites a través del valor alfa del color.
  3. Admite lotes dinámicos con escalado no uniforme.
  4. Tiene modo único / modo múltiple para que pueda tomar cada imagen como sprite separado de su atlas de texturas con el modo múltiple.
  5. Puede tomar la esquina del sprite en la vista de escena para escalarla o rotarla sin cambiar a la herramienta para escalar / rotar gizmo.
5 argón
fuente
44
6. Unity genera automáticamente geometría ajustada a los contornos de las partes no transparentes del sprite. Esto puede reducir el sobregiro, en comparación con renderizar el mismo sprite que un quad, y permitirle a usted / Unity empacar spritea más estrechamente en un atlas.
DMGregory