好久没写文章了,最近太累了。。
使用UGUI开发界面,一般比较小的图片会设置一个tag,让它打进图集。其实还有很多大的图片,比如logo、头像、图标、关卡图、等 。 宽高各一方大于256 或者 512的图片。
这类大的图片不太适合放在图集中,因为他们会把图集撑的很大,可是如果从图集中拿出来,又没办法压缩。因为美术不可能刚好给我们出一个2的幂次方的图片。
UGUI中有两个方法可以让不是幂次方的图片变成2的幂次方
1.给每个大图片设置一个独一无二的tag,这样这张图片就会被当成一个图集来处理。 具体压缩的方法可以看我之前写的文章
2.不使用Image组件,改用RawImage
如下图所示,TextureType这里设置成Default ,Advanced里设置NonPower of 2 里面有4个选项,none、toNearest、toLarge、toSmall (设置比例的)推荐设置成toNearest。
注意:RawImage也可以设置Sprite或者Texture两种。如果觉得图片不清楚的话推荐使用方法1来压缩。
然后这张图片就变成了2的幂次方,它不能放在Image组件中,但是可以放在RawImage中。开始压缩图片吧,Android压缩成ETC IOS压缩成 PVRTC
这类大图片有几个特点
1、不需要合并批次(原因就是不想把图集撑的很大)
2、不需要九宫格
3、对比了一下Sprite和Texture的方式,发现Texture的加载速度要比Sprite快很多。
4、如果用RawImage就不能使用unity自带的Android ETC1 自动通道分离,如果你的游戏必须要支持ETC1的话,那么就给它设置一个tag变成图集即可
5.如果ETC2压缩方式放在了ETC1的手机上,Unity会自己转成RGBA32不用担心显示错误的问题。
6.美术就喜欢设计颜色渐变的图片,怎么压缩都无法消除抖动问题,效果都不好,所以还是要保留一些图片的压缩格式是RGBA32. 选择性压缩 ETC 和PVRTC
最后欢迎大家一起讨论。
7.最近发现RawImage不会用Sprite的Atlas 。 换句话来说,就算设置了Sprite的tag.放在RawImage上 无效。。。坑啊
UI还是老老实实用Image吧。。。
最后编辑:2017-05-10作者:雨松MOMO
专注移动互联网,Unity3D游戏开发