Apa perbedaan antara kelas Unity's Sprite dan Texture2D?

19

Unity memiliki Texture2Dkelas dan Sprite(dengan terkaitSpriteRenderer ). Apa perbedaan antara kedua kelas ini? Keduanya mewakili gambar, untuk game 2D yang harus saya sukai satu lebih dari yang lain?

Apakah perbedaan utama antara keduanya yang menggunakan Spritesaya tidak perlu membuat sendiri "papan iklan"? Dan bahwa Spriteselalu diberikan langsung terhadap kamera?

Kobald
sumber

Jawaban:

16

Anda benar - agak. Sprite, secara default diberikan langsung ke kamera, namun Anda dapat dengan mudah mengubahnya jika menggunakan Sprite Renderer dalam adegan 3D.

Sprite adalah objek fisik dalam adegan Anda, sedangkan Texture2D persis seperti yang dikatakannya. Tekstur. Tekstur harus melekat pada material, dan material ke objek game (misalnya pesawat).

Kembali di Unity 3.x hari Anda tidak memiliki dukungan sprite langsung dari kotak sehingga Anda harus melempar Sprite Manager / Kelas Anda sendiri (atau Anda memiliki pilihan untuk membeli aset dari toko aset yang berusaha untuk memperbaiki gangguan ini. ). Unity benar-benar tidak pernah dimaksudkan untuk mendukung game 2D (namun pengembang menemukan cara untuk mewujudkannya), hingga 4.x, ketika Unity Developers akhirnya memberikan dukungan bawaan untuk game 2D (sprite, sprite sheet, fisika 2D).

Jika Anda melakukan gim 2D, selalu coba gunakan kelas Sprite. Ini lebih baik daripada menggulung sendiri, dan menawarkan lebih dari cukup.

Abu-abu
sumber
AFAIK Spritesjuga akan secara otomatis dimasukkan ke dalam atlas oleh Unity jika Anda mau.
bummzack
Itu hanya berlaku di Unity Pro, pengacau yang rumit
jhocking
4
Saya percaya ini sekarang gratis dengan Unity 5
Chris Hawkes
@ChrisHawkes Memang - hanya untuk mengonfirmasi pernyataan :) - sprite dapat dikemas ke dalam atlas (dan itu praktik yang disarankan) melalui Window> Sprite Packer
AgentKnopf
6

Ini adalah beberapa keuntungan yang saya sukai dari Sprite:

  1. Semua SpriteRenderer menggunakan bahan yang sama secara default, Sprite-Default meskipun mereka semua memiliki gambar / atlas yang berbeda sehingga memenuhi satu syarat batching dinamis Unity secara otomatis.
  2. Anda dapat menerapkan rona warna yang berbeda (melalui inspektur SpriteRenderer's) untuk setiap sprite meskipun semuanya memiliki bahan Sprite-Default yang sama. Ini tidak mungkin dalam pendekatan berbasis Texture2D yang properti 'warna' akan terikat pada materi. Ini juga sangat berguna untuk menghilangkan sprite melalui nilai warna alpha.
  3. Mendukung batch dinamis dengan penskalaan yang tidak seragam.
  4. Memiliki mode tunggal / mode ganda sehingga Anda dapat mengambil setiap gambar sebagai sprite terpisah dari atlas tekstur Anda dengan mode multipel.
  5. Anda dapat mengambil sudut sprite dalam tampilan pemandangan untuk menskalakan atau memutarnya tanpa mengubah skala / memutar alat gizmo.
5argon
sumber
4
6. Unity auto-menghasilkan geometri yang sesuai dengan kontur bagian sprite yang tidak transparan. Ini dapat mengurangi penarikan berlebih, dibandingkan dengan merender sprite yang sama dengan quad, dan memungkinkan Anda / Unity untuk mengemas spritea lebih erat di atlas.
DMGregory