В чем разница между классами Unity Sprite и Texture2D?

19

Unity имеет как Texture2Dкласс, так и Sprite(с родственными SpriteRenderer). В чем разница между этими двумя классами? Оба представляют изображение, для 2D-игр я должен отдать предпочтение одной над другой?

Является ли главное различие между ними в том, что при использовании Spriteмне не нужно самому создавать «рекламный щит»? И что Spriteвсегда отображается прямо на камеру?

Kobald
источник

Ответы:

16

Вы правы - несколько. Спрайты по умолчанию отображаются непосредственно на камеру, однако вы можете легко изменить это, если вы используете Sprite Renderer в 3D-сцене.

Спрайты - это физические объекты в вашей сцене, тогда как Texture2D - это именно то, о чем говорится. Текстура Текстура должна быть прикреплена к материалу, а материал - к игровому объекту (например, плоскости).

В дни Unity 3.x у вас не было поддержки спрайтов сразу из коробки, поэтому вам пришлось свернуть свой собственный Sprite Manager / Class (или у вас была возможность купить актив в магазине активов, который пытался исправить это раздражение). ). Unity действительно никогда не предназначалась для поддержки 2D-игр (тем не менее, разработчики нашли способы сделать это), до 4.x, когда разработчики Unity наконец предоставили встроенную поддержку 2D-игр (спрайты, спрайт-листы, 2D-физика).

Если вы играете в 2D, всегда старайтесь использовать класс Sprite. Это лучше, чем кататься самостоятельно, и предлагает более чем достаточно.

Серый
источник
AFAIK Spritesтакже будет автоматически упакован в атласы Unity, если вы захотите.
bummzack
Это верно только в Unity Pro, хитрые
пидоры
4
Я считаю, что теперь это бесплатно с Unity 5
Крис Хоукс
@ChrisHawkes На самом деле это - просто чтобы подтвердить утверждение :) - спрайты могут быть упакованы в атласы (и это рекомендуется практиковать) через Window> Sprite Packer
AgentKnopf
6

Вот некоторые из преимуществ, которые мне нравятся в Sprite:

  1. Все SpriteRenderer используют один и тот же материал по умолчанию, Sprite-Default, хотя все они имеют разные изображения / атласы, таким образом, удовлетворяя одному условию динамического пакетирования Unity автоматически.
  2. Вы можете применять разные цветовые оттенки (через инспектор SpriteRenderer) к каждому спрайту, даже если все они имеют одинаковый материал Sprite-Default. Это невозможно в подходе на основе Texture2D, свойство цвета которого будет привязано к материалу. Это также очень полезно для затухания спрайта через альфа-значение цвета.
  3. Поддерживает динамическое пакетирование с неравномерным масштабированием.
  4. Имеет один режим / несколько режимов, так что вы можете получить каждое изображение как отдельный спрайт из вашего текстурного атласа в режиме нескольких режимов.
  5. Вы можете захватить угол спрайта в виде сцены, чтобы масштабировать или поворачивать его, не переходя в инструмент масштабирования / вращения гизмо.
5argon
источник
4
6. Unity автоматически генерирует геометрию, соответствующую контурам непрозрачных частей спрайта. Это может уменьшить перерисовку по сравнению с рендерингом того же спрайта, что и квад, и позволяет вам / Unity более плотно упаковывать спрайты в атлас.
DMGregory