我已将.png(800 x 294)尺寸37.2 KB导入统一但导入后显示它的大小为0.9MB,这比原来的大。我在导入设置中将最大尺寸更改为1024到512,将分辨率从原始尺寸降低到512 x 188,尺寸为94KB。 .png大小如何在没有任何图像分辨率变化的情况下增加这么多(从37.2K到0.9MB)?
答案 0 :(得分:10)
您可能误导了png的物理纹理大小,如您指定的那样为37.2 KB,内存中的纹理大小。
如果您的文件是jpg,png或psd,在游戏内存中它将占用您指定的大小,这一点很重要。如果指定最高质量(未压缩的32位RGBA),则需要800 x 294 x 4 bytes (32 bits) = 235 200 x 4 bytes = 940 800 bytes = ~0.9 MB
如果你想使用更少的内存,你可以将质量降低到16位(每通道4位),或者使用压缩的内存类型,但是,它要求纹理具有两个维度的幂,并且是正方形(打开) iOS版)。那么在这种情况下,您将拥有1024 x 1024 x 0.5 bytes (4 bits per pixel PVRTC4) = 524 288 bytes = ~0.5 MB
这些压缩纹理在GPU内存中保持压缩状态。 PowerVR的GPU上有PVRTC compression,许多其他上有DXTn compression。通过使用它们,您将减少内存使用量以及渲染时间 - 处理的数据更少。它们并不像32位RGBA那样完美,但它们通常比16位RGBA更好 - 你应该自己检查视觉效果。
如果您想了解有关纹理压缩的更多详细信息,请查看此thread。
总之,unity显示的大小是内存中纹理的大小,与源文件类型或大小无关,唯一重要的是导入类型(压缩)和最大大小限制。
答案 1 :(得分:2)
这是因为压缩设置。将纹理类型更改为高级,将能够看到纹理可以具有的各种颜色格式(在格式设置中)。更改颜色格式会对纹理内存大小产生很大影响。