Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity增加导入精灵的大小_Unity3d_Sprite - Fatal编程技术网

Unity3d Unity增加导入精灵的大小

Unity3d Unity增加导入精灵的大小,unity3d,sprite,Unity3d,Sprite,我已经将一个37.2kb大小的.png(800x294)导入unity,但导入后显示它的大小为0.9MB,比原来的大。在导入设置中,我将1024的最大大小更改为512,从而将分辨率从原始设置降低到512 x 188,大小为94KB。在没有任何图像分辨率变化的情况下,.png大小是如何增加这么多的(从37.2K增加到0.9MB的?这是因为压缩设置。将纹理类型更改为“高级”,将能够看到纹理可以具有的各种颜色格式(在“格式”设置中)。更改颜色格式对纹理内存大小有很大影响。您可能误导了png的物理纹理大

我已经将一个37.2kb大小的.png(800x294)导入unity,但导入后显示它的大小为0.9MB,比原来的大。在导入设置中,我将1024的最大大小更改为512,从而将分辨率从原始设置降低到512 x 188,大小为94KB。在没有任何图像分辨率变化的情况下,.png大小是如何增加这么多的(从37.2K增加到0.9MB的?

这是因为压缩设置。将纹理类型更改为“高级”,将能够看到纹理可以具有的各种颜色格式(在“格式”设置中)。更改颜色格式对纹理内存大小有很大影响。

您可能误导了png的物理纹理大小,即您指定的37.2 KB,内存中有纹理大小

没关系,如果你的文件是jpg、png或psd,在游戏内存中,它的大小将与你指定的大小相同。如果指定最大质量,即未压缩的32位RGBA,则需要
800 x 294 x 4字节(32位)=235 200 x 4字节=940 800字节=~0.9 MB

如果您想使用更少的内存,可以将质量降低到16位(每个通道4位),或者使用内存中的压缩类型,但是,它要求纹理具有二维的能力,并且是方形的(在iOS上)。在这种情况下,您将拥有
1024x102x0.5字节(每像素4位PVRTC4)=524288字节=~0.5 MB

这些压缩的纹理在GPU内存中保持压缩。在PowerVR的GPU和许多其他设备上都可以使用。通过使用它们,您将减少内存使用量,并缩短渲染时间—需要处理的数据更少。它们不如32位RGBA完美,但通常比16位RGBA更好——你应该自己检查视觉效果

如果您想了解有关纹理压缩的更多详细信息,也可以看看这个


总之,unity显示的大小是内存中纹理的大小,与源文件类型或大小无关,唯一重要的是导入类型(压缩)和最大大小限制。

嘿,内存中压缩的图像是如何工作的?它们什么时候被有效地解压?它们在GPU内存中被压缩,所以永远不会被解压。我用更多的数据更新了答案。更准确地说,它们是由图形硬件实时解码的。因此,不会对绩效产生负面影响;事实上,使用它们可以提高性能(取决于您的瓶颈),因为减少了内存带宽。in-GPU不等于in-storage。对于一些简单的游戏,更重要的是让CPU在场景启动时解码20MB的png,而不是在驱动器上解码400MB的GPU。因为移动用户可以拥有16个Gig设备,或者附近没有WiFi。我认为这可能与此相关。