Unity的Sprite和Texture2D类之间有什么区别?


19

Unity既有一个Texture2D类,又有一个Sprite(带有related SpriteRenderer)。这两个类有什么区别?两者都代表图像,对于2D游戏,我是否应该偏爱一个?

使用Sprite我不需要自己创建“广告牌”四边形的两者之间的主要区别是吗?并且Sprite总是直接在相机上渲染?

Answers:


16

您是正确的-有点。默认情况下,Sprite会直接在相机上渲染,但是如果在3D场景中使用Sprite Renderer,则可以轻松更改此设置。

精灵是场景中的物理对象,而Texture2D正是它所说的。纹理。纹理必须附加到材质上,并且材质必须附加到游戏对象(例如飞机)上。

早在Unity 3.x的日子里,您就没有开箱即用的Sprite支持,因此您必须推出自己的Sprite Manager / Class(或者您可以选择从资产商店购买资产来尝试解决此烦恼)。Unity确实从来没有打算支持2D游戏(尽管开发人员找到了实现它的方法),直到4.x,Unity Developers最终为2D游戏提供了内置支持(精灵,精灵表,2D物理)。

如果您在进行2D游戏,请始终尝试使用Sprite类。这比自己动手做得更好,而且功能绰绰有余。


Sprites如果需要,AFAIK 还将由Unity自动打包到地图集中。
bummzack 2014年

只有在Unity Pro中如此,棘手的
错误专家才能做到

4
我相信Unity 5
克里斯·霍克斯

@ChrisHawkes确实是-仅需确认声明即可:)-可以通过“窗口”>“ Sprite Packer”将其打包为地图集(建议做法)
AgentKnopf

6

这些是我喜欢Sprite的一些优点:

  1. 默认情况下,所有SpriteRenderer都使用相同的材​​质,即Sprite-Default,即使它们都具有不同的图像/图集,从而自动满足Unity动态批处理的一种条件。
  2. 您可以对每个精灵使用不同的颜色(通过SpriteRenderer的检查器),即使它们都具有相同的Sprite-Default材质。在基于Texture2D的方法中这是不可能的,因为“颜色”属性将与材质相关联。这对于通过颜色的alpha值淡出子画面也非常有用。
  3. 支持具有非均匀缩放比例的动态批处理。
  4. 具有单模式/多模式,因此您可以使用多模式将每个图像从纹理图集中作为单独的精灵捕获。
  5. 您可以在场景视图中抓住精灵的角来缩放或旋转它,而无需更改缩放/旋转Gizmo工具。

4
6. Unity自动生成适合精灵非透明部分轮廓的几何形状。与将相同的精灵渲染为四边形相比,这可以减少过度绘制,并允许您/ Unity在地图集中更紧密地打包精灵。
DMGregory
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.