Quelle est la différence entre les classes Sprite et Texture2D d'Unity?


19

L'unité a à la fois une Texture2Dclasse et un Sprite(avec des éléments associés SpriteRenderer). Quelle est la différence entre ces deux classes? Les deux représentent une image, pour les jeux 2D dois-je privilégier l'un par rapport à l'autre?

La principale différence entre les deux est que l'utilisation de SpriteJe n'ai pas besoin de créer moi-même le quad "panneau d'affichage"? Et que le Spriterendu est toujours directement contre la caméra?

Réponses:


16

Vous avez raison - quelque peu. Les sprites, par défaut, sont rendus directement contre la caméra, mais vous pouvez facilement changer cela si vous utilisez le Sprite Renderer dans une scène 3D.

Les sprites sont des objets physiques dans votre scène, tandis que Texture2D est exactement ce qu'il dit. Une texture. Une texture doit être attachée à un matériau et le matériau à un objet de jeu (par exemple un avion).

De retour dans Unity 3.x jours, vous n'aviez pas de support de sprite dès la sortie de la boîte, vous avez donc dû lancer votre propre gestionnaire / classe Sprite (ou vous aviez la possibilité d'acheter un actif dans le magasin d'actifs qui a tenté de remédier à cet ennui ). Unity n'a vraiment jamais été conçu pour prendre en charge les jeux 2D (néanmoins, les développeurs ont trouvé des moyens d'y arriver), jusqu'à la version 4.x, lorsque les développeurs Unity ont finalement fourni un support intégré pour les jeux 2D (sprites, feuilles de sprites, physique 2D).

Si vous faites un jeu 2D, essayez toujours d'utiliser la classe Sprite. C'est mieux que de rouler le vôtre et offre plus que suffisant.


AFAIK Spritessera également automatiquement emballé dans des atlas par Unity si vous le souhaitez.
bummzack

Cela n'est vrai que dans Unity Pro,
buggers délicats

4
Je crois que c'est maintenant gratuit avec Unity 5
Chris Hawkes

@ChrisHawkes En effet, c'est juste pour confirmer la déclaration :) - les sprites peuvent être emballés dans des atlas (et c'est une pratique recommandée) via Window> Sprite Packer
AgentKnopf

6

Voici quelques-uns des avantages que j'aime avec Sprite:

  1. Tous les SpriteRenderer utilisent le même matériau par défaut, Sprite-Default même s'ils ont tous une image / un atlas différents, satisfaisant ainsi une condition du traitement par lots dynamique d'Unity automatiquement.
  2. Vous pouvez appliquer une teinte de couleur différente (via l'inspecteur SpriteRenderer) à chaque image-objet même si elles ont toutes le même matériau Sprite-Default. Ce n'est pas possible dans l'approche basée sur Texture2D dont la propriété "couleur" sera liée au matériau. Ceci est également très utile pour estomper le sprite via la valeur alpha de la couleur.
  3. Prend en charge le traitement par lots dynamique avec une mise à l'échelle non uniforme.
  4. A un mode unique / mode multiple afin que vous puissiez saisir chaque image en tant que sprite séparé de votre atlas de texture avec le mode multiple.
  5. Vous pouvez saisir le coin de l'image-objet en mode scène pour le mettre à l'échelle ou le faire pivoter sans passer à l'outil de gizmo d'échelle / rotation.

4
6. Unity génère automatiquement une géométrie adaptée aux contours des parties non transparentes de l'image-objet. Cela peut réduire l'overdraw, par rapport au rendu du même sprite qu'un quad, et vous permettre / à Unity de regrouper les spritea plus étroitement dans un atlas.
DMGregory
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.