Is the main difference between the two that using
Sprite I don't need to create the "billboard" quad myself? And that the
Sprite is always rendered directly against the camera?
You are correct - somewhat. Sprites, by default are rendered directly against the camera, however you can easily change this if you are using the Sprite Renderer in a 3D scene.
Sprites are physical objects in your scene, whereas Texture2D is exactly what it says it is. A texture. A texture must be attached to a material, and the material to a game object(e.g a plane).
Back in Unity 3.x days you didn't have sprite support right out of the box so you had to roll your own Sprite Manager/Class(or you had the option of buying an asset off the asset store that attempted to remedy this annoyance). Unity was really never meant to support 2D games(nevertheless developers found ways to make it happen), until 4.x, when the Unity Developers finally provided built-in support for 2D games(sprites, sprite sheets, 2D physics).
If you're doing a 2D game, always try to use the Sprite class. It's better than rolling your own, and offers more than enough.
These are some of the advantages I love about Sprite :
- All SpriteRenderer use the same material by default, Sprite-Default even though they all have different image/atlas thus satisfying one condition of Unity's dynamic batching automatically.
- You can apply different color tint (via SpriteRenderer's inspector) to each sprite even though they all have the same Sprite-Default material. This is not possible in Texture2D based approach which 'color' property will be tied to the material. This is also very useful for fading out sprite via alpha value of color.
- Supports dynamic batching with non-uniform scaling.
- Has single mode/multiple mode so you can grab each image as separate sprite from your texture atlas with the multiple mode.
- You can grab the corner of sprite in scene view to scale or rotate it without changing to scale/rotate gizmo tool.