Was ist der Unterschied zwischen den Sprite- und Texture2D-Klassen von Unity?

19

Die Einheit hat sowohl eine Texture2DKlasse als auch eine Sprite(mit verwandten SpriteRenderer). Was ist der Unterschied zwischen diesen beiden Klassen? Beide stellen ein Bild dar, für 2D-Spiele sollte ich eines dem anderen vorziehen?

Ist der Hauptunterschied zwischen den beiden, dass Spriteich mit dem "Billboard" Quad nicht selbst erstellen muss? Und dass das Spriteimmer direkt gegen die Kamera gerendert wird?

Kobald
quelle

Antworten:

16

Sie haben recht - etwas. Sprites werden standardmäßig direkt auf der Kamera gerendert. Sie können dies jedoch problemlos ändern, wenn Sie den Sprite-Renderer in einer 3D-Szene verwenden.

Sprites sind physische Objekte in Ihrer Szene, während Texture2D genau das ist, was es verspricht. Eine Textur. Eine Textur muss an ein Material und das Material an ein Spielobjekt (z. B. eine Ebene) angehängt werden.

In Unity 3.x-Tagen hatten Sie keinen sofort einsatzbereiten Sprite-Support, sodass Sie Ihren eigenen Sprite-Manager / Ihre eigene Sprite-Klasse rollen mussten (oder Sie hatten die Option, ein Asset aus dem Asset Store zu kaufen, das versucht hat, dieses Ärgernis zu beheben ). Unity sollte eigentlich nie 2D-Spiele unterstützen (Entwickler haben jedoch Möglichkeiten gefunden, dies umzusetzen), bis die Unity-Entwickler ab 4.x eine integrierte Unterstützung für 2D-Spiele (Sprites, Sprite Sheets, 2D-Physik) zur Verfügung stellten.

Wenn Sie ein 2D-Spiel spielen, versuchen Sie immer, die Sprite-Klasse zu verwenden. Es ist besser als dein eigenes zu rollen und bietet mehr als genug.

Grau
quelle
AFAIK Spriteswird von Unity auch automatisch in Atlanten gepackt, wenn Sie dies wünschen.
Mistzack
Das gilt nur für Unity Pro, knifflige Kerle
am
4
Ich glaube, dies ist jetzt kostenlos mit Unity 5
Chris Hawkes
@ChrisHawkes In der Tat ist es - nur um die Aussage zu bestätigen :) - Sprites können über Window> Sprite Packer
AgentKnopf
6

Dies sind einige der Vorteile, die ich an Sprite liebe:

  1. Alle SpriteRenderer verwenden standardmäßig dasselbe Material, Sprite-Default, auch wenn sie alle unterschiedliche Bilder / Atlanten haben und somit automatisch eine Bedingung für das dynamische Stapeln von Unity erfüllen.
  2. Sie können jedem Sprite einen anderen Farbton zuweisen (über den Inspektor von SpriteRenderer), obwohl alle Sprite-Default-Materialien identisch sind. Dies ist in einem auf Texture2D basierenden Ansatz nicht möglich, da die 'Farbe'-Eigenschaft an das Material gebunden ist. Dies ist auch sehr nützlich, um das Sprite über den Alpha-Wert der Farbe auszublenden.
  3. Unterstützt dynamisches Batching mit ungleichmäßiger Skalierung.
  4. Hat einen Einzelmodus / Mehrfachmodus, so dass Sie mit dem Mehrfachmodus jedes Bild als separates Sprite von Ihrem Texturatlas erfassen können.
  5. Sie können die Ecke des Sprites in der Szenenansicht greifen, um es zu skalieren oder zu drehen, ohne das Gizmo-Werkzeug zum Skalieren / Drehen zu ändern.
5argon
quelle
4
6. Unity generiert automatisch eine Geometrie, die an die Konturen der nicht transparenten Teile des Sprites angepasst ist. Dies kann die Überziehung verringern, verglichen mit dem Rendern des gleichen Sprites als Quad, und es ermöglichen, dass Sie / Unity den Sprite enger in einen Atlas packen.
DMGregory