人气 198

[WIKI] Sprite 和Texture 的区别 [复制链接]

九艺网 2021-3-13 21:15:06

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一,导入

1,无论是什么格式的图片(最好直接使用PS直接导出的PSD格式),Unity都会自己搞一套格式,并且打包的时候也不会用你文件夹下图片的格式,而是Unity自己的格式。

2,都可以在导入时设置,图片在发生拉伸变化时使用那种滤波模式,point ,Biliner,Trilinear,得到依次滤波效果提升的图片,point 使用最邻近滤波,采样像素通常只有一个,图像放大缩小后会有像素风格,在制作棋盘时,不希望有模糊效果选择这这种模式更好。Biliner使用线性滤波,找相邻四个像素差值,放大缩小后会有模糊效果,会被模糊,Trilinear,几乎和Biliner是一样的,只是Triliner在多级纹理渐变中进行了混合,如果一个纹理没有使用该技术(Creat MitMap)几乎是一样效果。Splite 可以直接选CreatMipMap,Texture需要把图片设置为Advance后选择是否使用多级纹理渐变技术(unity会根据相机距离对象距离,生成8个Mip,该做法在3D场景UI是很好的做法,如果UI都在平面就暴露出了它的弊端,因为都在平面,所以不会有距离相机距离的变化,勾选就行,不然会增加内存,切记。)

3.Texture 在导入设置是Warp Mode 设置可以纹理在渲染超过纹理坐标时,Climp只选择重复纹理边缘像素,还是repeat模式重复整个纹理的模式

4.MaxSize 该纹理的最大尺寸,如原图尺寸为1024*568,该项设置成4096,unity也只会使用它的原尺寸大小,改值的大小大于等于图片原尺寸,如果小于该纹理质量会有损失


5.Format 格式设置

  • Compressed 压缩格式,如果纹理没有透明通道,一般使用该项,优化内存量,如果有透明通道,显示原图片有可能出现问题。4位
  • 16bit 低质量真彩格式。16位
  • TrueColor 真彩模式。质量最高,是压缩格式的8倍,但也更消耗内存,32位
  • Crunched 这种类型将会根据显卡的GPU来选择合适的压缩格式进行压缩然后会选用一种CPU上就能处理的压缩格式再压缩一遍。如果在制作供人下载的资源包的时候这种类型非常的合适。这个类型的压缩需要很长时间,但在运行时解压是非常快的。



6.使用Advance 进一步设置Sprite 或者Texture

你的贴图无论如何都必须是2的幂次方。因为只有2的幂次方图片 并且没有透明通道才会被压缩,IOS会压缩成pvr格  式,Android会压缩成ETC格式,压缩以后图片会小很多的,好几倍的小

如果原图不是2的幂次方,可以在advance设置Non Power of 2值,

  • ToNearest :转换成距离该图片最近的2的幂次方值。
  • ToLarger : 转换成比该图片大的2的幂次方值。
  • ToSmaller : 转换成比该图片小的2的幂次方值。
二,对比Sprite,精灵

1.2D--UI

1.Sprite 用在 Image 组件上.,可以用来制作动画,

可以设置Simple模式,作为一般UI,

设置为Sliced模式,即九宫格模式,在图集中设置图图片边界后,使图片的拉伸只拉伸中间部分,不拉伸边界

设置为Tiled 模式,实现过个图片重复平铺的效果,

设置为Filed模式,实现图片的部分到整体的播放,可以用来做技能冷却,或者游戏的进度条(不是压缩的拉伸)

材质通常不需要选择,很少用到,可以用来实现一些特殊效果,如凹凸感觉

  2.Sprite 有图集的概念,可以选择整图导入,UNITY中使用SpriteEditor切割,也可以选择导入后设置图片的packageTag系统       自动打包图集,图片小的,重复性比较高的图片最好打成图集,


  注意:1,一个图集内的图片用UISprite,那么它就是一个DrawCall。但是如果你做了一个图集是1024X1024的。此时你的界面   上只用了图集中的一张很小的图,那么很抱歉1024X1024这张大图都需要载入你的内存里面,1024就是4M的内存,如   果你做了10个1024的图集,你的界面上刚好都只用了每个图集里面的一张小图,那么再次抱歉你的内存直接飙40M

            2.带透明通道和不带透明通道的,CreatMipMap和不Create 的,不能制作成同一图集  

2.3D---场景

  1.单个Sprite 直接拖入场景中,系统自动添加SpriteRanderder 组件,作为3D物体直接使用,

  2. 多个Sprite直接拖入场景,可以直接制作帧动画,在2D中同样也可以。

2.Texture 纹理

2D.---UI

1.Texture用在Raw Image组件上,可以用来制作动画

2.tuxture没有图集的概念,这样内存里只会占用你这一张图的大小,内存虽然小了但是DrawCall就上去了。因为每一

张UITexture就是一次DrawCall。原画,或者背景图建议直接使用UITexture。

3.可以通过UV 调节图片显示的偏移,和重复(可以用来制作多格子血条)

3D--场景

1.无论单个,多个,不可以直接拖入3D场景中!!,2D也不行

2.用于3D模型贴图,(Shader代码把贴图和纹理坐标映射),再由GPU把模型渲染出来

MeshFiiter组件中模型网格,存储的纹理坐标信息(Unity自己创建的Cube会自动添加纹理坐标所以创建后就能贴上纹理,3D建模时如果忽略 没有给模型生成纹理坐标,会导致模型贴上贴图没有效果)

MesherRenderder 物体渲染组件

补充:


材质纹理贴图的关系:
材质 Material包含贴图 Map,贴图包含纹理 Texture。

纹理是最基本的数据输入单位,游戏领域基本上都用的是位图。此外还有程序化生成的纹理 Procedural Texture。

贴图的英语 Map 其实包含了另一层含义就是“映射”。其功能就是把纹理通过 UV 坐标映射到3D 物体表面。贴图包含了除了纹理以外其他很多信息,比方说 UV 坐标、贴图输入输出控制等等。

材质是一个数据集,主要功能就是给渲染器提供数据和光照算法。贴图就是其中数据的一部分,根据用途不同,贴图也会被分成不同的类型,比方说 Diffuse Map,Specular Map,Normal Map 和 Gloss Map 等等。另外一个重要部分就是光照(高光,漫反射,环境等信息),通过Shader语言,调用CG,HLSL,GLSL图像编程接口写入一个文本中,构成材质的数据集合。

同时材质可以提供接口可以方便调试。


像素,分辨率
像素是计算机屏幕上所能显示的最小单位。用来表示图像的单位。

一个像素有多大呢?主要取决于显示器的分辨率,相同面积不同分辨率的显示屏,其像素点大小就不相同。

如一张640X480的图片,表示这张图片在每一个长度的方向上都有640个像素点,而每一个宽度方向上都480个像素点,总数就是640X480=307200(个像素),简称30万像素

分辨率指屏幕上像素的数目,为了控制像素的亮度和彩色深度,每个像素需要很多个二进制位来表示,如果要显示256种颜色,则每个像素至少需要8位(一个字节)来表示,即2的8次方等于256;当显示真彩色时,每个像素要用3个字节的存储量.像素值也是长度定义中使用最为普遍的单位像素值的英文名称为pixel

用像素值定义长度的时候,一定要考虑屏幕分辨率的兼容性,例如,一个设计者设置了一个张图片的显示宽度是800像素,在800*600像素分辨率的屏幕上它能够占据整个宽度,而在1600*1200像素宽度的屏幕上,它只能占有屏幕宽度的一半。

大小=分辨率*位深/8     分辨率=宽*高(如:1024*768,640*480)    位深:如24位,16位,8位       /8计算的是字节数。

例如:





一幅图像分辨率:1024*768,24位,则其大小计算如下: 不考虑压缩,占位等。。。。
大小=1024*768*24/8=2359296byte=2304KB

1、厘米和像素

厘米和像素没任何关系,厘米是长度单位,什么是象素呢?像素是组成图像的最基本单元。它是一个小的方形的颜色块。

一个图像通常由许多像素组成,这些像素被排成横行或纵列,每个像素都是方形的。当你用缩放工具将图像放到足够大时,就可以看到类似马赛克的效果,每个小方块就是一个像素。

每个像素都有不同的颜色值。单位面积内的像素越多,分辨率(dpi)越高,图像的效果就越好。

显示器上正常显示的图像,当放大到一定比例后,就会看到类似马赛克的效果。每个小方块为一个像素,也可称为栅格。像素图的质量是由分辨率决定的,单位面积内的像素越多,分辨率越高,图像的效果就越好。

显示屏的尺寸是指其对角线的长度,用英寸表示,1英寸=25.4毫米。

我们以一款手机为例来说明这个问题。其主屏尺寸:4寸,主屏分辨率:800x480像素,通过勾股定理计算可知其长宽为3.430寸X2.058寸(87.1毫米X52.3毫米)。800/3.430=233,即每英寸长度有233个像素,每一个像素有87.1/800=0.109毫米大。

显示屏的尺寸是指其对角线的长度,用英寸表示,1英寸=25.4毫米。

就是说这个手机的显示屏共由800X480=384000个边长为0.109毫米大小相等的像素点所组成。任何一张图片在这个显示器里百分之百全屏显示时(图片作为墙纸或屏保时效果最好),其像素点都是这么大。如果图片大过显示屏,则要滑动滚动条才能看完全图,如果小于显示屏,则会居中显示,无图显示处为黑框显示。对于640X480分辨率的图在此显示屏中会居中显示,在长度方向上两端会有一截为黑框显示。这个图片的尺寸长为69.68毫米,宽为52.3毫米。如果是在光线不足的条件下照得的相片,你会看到一格格的马赛克,画面很是粗糙。

而对于4.3寸主屏,若其分辨率:1280x720像素,则长和宽3.746X2.108(95.2毫米X53.5毫米),1280/3.746=341,即每英寸长度有341个像素,每一个像素有95.2/1280=0.074毫米大。显而易见这个屏幕比前面那个屏显示的效果好得多了。640X480分辨率的图片在这里的长和宽分别为47.6毫米和35.7毫米。对于4.5寸主屏,若其分辨率为:1280x720像素,则长和宽3.923X2.206(99.6毫米X56.0毫米),1280/3.923=326,即每英寸长度上有326个像素,每一个像素有99.6/1280=0.078毫米。和前面的4.3寸屏差不多


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 15:03 , Processed in 0.136798 second(s), 23 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.