一张图片导入Unity,真实大小是怎么计算的,记录一下。图片中有分辨率,压缩格式,和大小,这里分别解释一下。
分辨率
这个应该都知道怎么回事,水平和垂直方向各有多少个像素。这里说一点,看到上方的Max Size 这个设置,指的是这个图片最大的分辨率是多少,
- 例如2048:2048x2048,这个值会影响图片大小,如果图片原始大小为4096x2048,那么这张图片分辨率就会被压缩到2048*1024,使用最大分辨率等比例缩放。
- 当然如果原始图小于设置的值,例如1000x1000,那么这张图片就不会有改动
压缩格式
对这张图片使用的压缩格式,压缩格式有很多,如ETC2 、PVRTC 、DTX5等,压缩格式的理解是:每一个像素占用多少个字节,上面图片中,我选择的是ETC2 8bits,
指的就是每一个像素占用多少个字节(bytes/pixel)。
大小
最后就是计算图片存储大小,分辨率x压缩格式字节大小=存储大小。(不要勾选Mip Maps)
例如:2048x2048x8bits(压缩格式)?/ 8(一个字节8bits) / 1024=4096KB=4MB
例如:1024x512x4bits(压缩格式?ETC2 4bits)?/ 8(一个字节8bits) / 1024=256KB=0.25MB
如果不知道压缩格式是多少bits,在Unity官网压缩格式中可找到
Unity - Manual: Recommended, default, and supported texture formats, by platformhttps://docs.unity3d.com/Manual/class-TextureImporterOverride.html
最后需要注意几点
Android
- 分辨率宽、高必须是4的倍数,才能被正确压缩,才能使用对用的压缩bits计算
- 如果宽、高有一方不是4的倍数,压缩格式就会被回退到RGBA 32bits(如果是JPG,则会回退到RGB24bits,这要看图片属性的位深度是24,还是32),计算方式一致。这一点要尤为注意,可能就是包体过大的原因
- 如果不是4的倍数,Unity则会警告:只有宽度/高度为4倍的纹理才可以压缩为DXT1格式
IOS
分辨率如果不是2的幂次方也不能正常压缩 ,同时报警告? (NPOT指的就是 非2的幂)
Only POT texture can be compressed to PVRTC format??只有POT纹理可以压缩到PVRTC格式
|