Яка різниця між класами Sprite і Texture2D?


19

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

Чи є основна відмінність між ними тим, що за допомогою Spriteмені не потрібно створювати "білборд" квадроцикл? І що Spriteзавжди відображається прямо проти камери?

Відповіді:


16

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

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

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

Якщо ви робите 2D гру, завжди намагайтеся використовувати клас Sprite. Це краще, ніж прокат свого, і пропонує більше, ніж достатньо.


SpritesUnity також автоматично упакує в атласи AFAIK .
bummzack

Це справедливо лише в Unity Pro, хитрі
клопоти

4
Я вважаю, що це тепер безкоштовно з Unity 5
Chris Hawkes

@ChrisHawkes Дійсно, що це - просто підтвердити твердження :) - спрайтів можна упакувати в атласи (і це рекомендується практика) через Window> Sprite Packer
AgentKnopf

6

Ось деякі з переваг, які я люблю Sprite:

  1. Усі SpriteRenderer використовують за замовчуванням один і той же матеріал, Sprite-Default, хоча всі вони мають різні зображення / атласи, таким чином, автоматично задовольняючи одну умову динамічного пакетування Unity.
  2. Ви можете застосувати різні кольорові відтінки (через інспектора SpriteRenderer) до кожного спрайту, навіть якщо всі вони мають однаковий матеріал Sprite-Default. Це неможливо в підході, що базується на Texture2D, властивість 'color' буде прив'язано до матеріалу. Це також дуже корисно для вицвітання спрайту через альфа-значення кольору.
  3. Підтримує динамічну групування з нерівномірним масштабуванням.
  4. Має одномодовий / кількарежимний режим, тому ви можете захоплювати кожне зображення як окремий спрайт із текстурного атласу з декількома режимами.
  5. Ви можете захопити кут спрайт у вікні сцени, щоб масштабувати або обертати його, не змінюючи масштаб / обертати інструмент gizmo.

4
6. Єдність автоматично генерує геометрію, відповідну контурам непрозорих частин спрайта. Це може зменшити перевитрату в порівнянні з наданням того ж спрайту, як і квадратик, і дозволити вам / Unity упакувати спрайти більш щільно в атласі.
DMGregory
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.