Unity图片格式

来源:互联网 发布:吸毒到底有多恐怖 知乎 编辑:程序博客网 时间:2024/05/16 07:20

Unity图片资源的分类

在Unity中,图片一般可以分为两种:贴图(Texture)和精灵(Sprite)。我们可以简单的理解为3D(模型使用的)图片和2D(UI使用的)图片。在可以直接选择Texture Type去更改你的导入方式。

  • Texture 
    • Texture一般作为3D模型上的贴图,需要有对应的材质球并关联到相应3D网格模型去使用。一般来说Texture会是一个长宽像素都是2的n次方的正方形,这也是大部分建模软件(如maya)规定的POT(Power Of Tow)。
    • 不过并不是说非POT图片就不能使用,只是在Unity的压缩上会很吃亏,而且你导入后Unity仍然会以POT方式去生成对应的图片。
    • POT实际上可以是长方形,只要长宽都是POT就可以,但是大部分建模软件上都会使用正方形。
  • Sprite 
    • Sprite一般作为UI上的图片,一般不会去制作对应的材质球。在UGUI上一般是拖动到相应的控件上就可以了。
    • Sprite是一个资源导入的方式,一个资源导入后并非只能是单个Sprite,在Sprite Mode选项上可以选择Multiple去生成多个Sprite,不过需要在Sprite Editor选项上对图片进行切割,通常需要美术参与。
    • Sprite一般对大小不会做限制,UI需要多大就用多大,但是Unity在压缩上,对4的倍数分辨率的图片支持上会更好一点(应该是方便图片在POT下的位置计算),所以在制作时可以对PS的画布大小进行适当调整。
    • Sprite在导入设置完成后建议使用 Sprite Packer 进行打包,如果你确定不打包。。。那么建议你做成POT。。。
    • 在使用 Sprite Packer 打包图集后你会发现,Unity生成的图片都是POT的。

MiniMap

图片资源在导入为Sprite后,我们可以看到一个MiniMap选项,该选项是生成该图片的低分辨图片(1/2,1/4,1/8。。。),这些小图会使生成的资源文件变大1/3,但是在3D渲染时Unity会根据物体显示的大小(或者距离?)自动选择不同的分辨率以提高渲染效率。 
一般来说,Sprite不会有这种需求,所以关闭这个选项可以减少包体的大小。

而对于Texture,同样可以取消。Texture和Sprite实际上只是Unity的两种预设,当你在Texture Mode上选择Advance时,你会有很完全的导入选项。如果你确定你的3D物体不会有很多的远近变化时,选择Advance,取消MiniMap会是一个很正确的选择。而对于一般的3D物体,MiniMap带来的效率提高是值得你和用户去花费这点储存空间的。

但值得注意的是,导入资源使用的文件并不会影响最终包体大小

Sprite Packer + AssetBundle的注意事项

当你在使用AssetBundle时,你的Sprite引用实际上是Sprite Packer生成的图集的引用。所以在AssetBundle上,即便你只使用到一个图集中的一个小像素,Unity也会将该图集完整地打入AssetBundle中。所以Sprite尽量在Bundle的分包基础上去分图集,可以通过图片import setting 中的Packing Tag为每个图片分成不同图集,打包成不同的ab包,一般可以将经常使用到的多个图片变成一个图集然后打包在一起。


转载自http://blog.csdn.net/xmousez/article/details/53894571