Jaka jest różnica między klasami Sprite i Texture2D w Unity?

19

Unity ma zarówno Texture2Dklasę, jak i Sprite(z pokrewnymi SpriteRenderer). Jaka jest różnica między tymi dwiema klasami? Oba stanowią obraz, czy w grach 2D należy faworyzować jedno nad drugim?

Czy główna różnica między nimi polega na tym, że przy użyciu Spritenie muszę samodzielnie tworzyć „billboardu”? I że Spritezawsze jest renderowane bezpośrednio w kamerze?

Kobald
źródło

Odpowiedzi:

16

Masz rację - nieco. Duszki domyślnie są renderowane bezpośrednio w kamerze, ale możesz to łatwo zmienić, jeśli używasz Renderowania duszka w scenie 3D.

Duszki są obiektami fizycznymi w twojej scenie, podczas gdy Texture2D jest dokładnie tym, co mówi. Tekstura Tekstura musi być przymocowana do materiału, a materiał do obiektu gry (np. Płaszczyzny).

Po powrocie do Unity 3.x nie miałeś wsparcia sprite od razu po wyjęciu z pudełka, więc musiałeś wyrzucić własnego Sprite Managera / Klasę (lub miałeś opcję wykupienia zasobu ze sklepu aktywów, który próbował zaradzić tej irytacji ). Unity nigdy tak naprawdę nie miało obsługiwać gier 2D (niemniej programiści znaleźli sposoby, aby tak się stało), aż do 4.x, kiedy to deweloperzy Unity w końcu udostępnili wbudowaną obsługę gier 2D (duszki, arkusze sprite, fizyka 2D).

Jeśli grasz w grę 2D, zawsze staraj się używać klasy Sprite. To lepsze niż tworzenie własnych i oferuje więcej niż wystarczająco.

Szary
źródło
AFAIK Spriteszostanie również automatycznie zapakowany w atlasy przez Unity, jeśli chcesz.
bummzack
Jest to prawdą tylko w Unity Pro, podstępnych
robakach
4
Wierzę, że jest to teraz za darmo w Unity 5
Chris Hawkes
@ChrisHawkes Rzeczywiście jest to - aby potwierdzić stwierdzenie :) - duszki można spakować do atlasów (i jest to zalecana praktyka) przez Window> Sprite Packer
AgentKnopf
6

Oto niektóre z zalet, które kocham w Sprite:

  1. Wszystkie SpriteRenderer domyślnie używają tego samego materiału, Sprite-Default, mimo że wszystkie mają inny obraz / atlas, dzięki czemu spełniają jeden warunek automatycznego grupowania dynamicznego Unity.
  2. Możesz zastosować inny odcień koloru (za pomocą inspektora SpriteRenderer) do każdego duszka, nawet jeśli wszystkie mają ten sam materiał domyślny Sprite. Nie jest to możliwe w podejściu opartym na Texture2D, która właściwość „kolor” zostanie powiązana z materiałem. Jest to również bardzo przydatne do zanikania duszka poprzez wartość alfa koloru.
  3. Obsługuje dynamiczne grupowanie z nierównomiernym skalowaniem.
  4. Ma tryb pojedynczy / wiele trybów, dzięki czemu możesz uchwycić każdy obraz jako osobną duszkę z atlasu tekstur w trybie wielokrotnym.
  5. Możesz chwycić róg duszka w widoku sceny, aby skalować lub obracać go bez zmiany narzędzia skalowania / obracania Gizmo.
5argon
źródło
4
6. Unity automatycznie generuje geometrię dopasowaną do konturów nieprzezroczystych części duszka. Może to zmniejszyć overdraw w porównaniu do renderowania tego samego duszka jako quada i pozwolić ci / Unity spakować spritea w atlasie.
DMGregory