首页 > 解决方案 > 为什么图像在导入 Unity 后会变大?

问题描述

我有一大组总大小为 10 mb 的 jpg 图像,但是当我将它们导入统一时,它们的大小会增加几倍!如何保持图像的原始大小?

标签: unity3dtextures

解决方案


上面的答案是错误的,因此,我决定在这里进一步解释。

请注意,磁盘的大小与 ram/gpu 的大小不同。您在导入设置中找到的是 ram 上的大小。默认值(没有 mip)应该是应用程序大小的最小大小(几乎)。

尽管它在导入设置中显示更大的大小,但您的应用仍会为构建应用和应用安装程序再次压缩它们。

为什么 ram 的大小如此之大? 在图形渲染中,所有图像(无论是 jpg 还是 png)都将被读取和解码。解码结果将是所有像素数组..etc,取决于您的纹理格式(解码后),您的内存大小将不同。但是,您的源图像通常是用于磁盘存储的高度压缩(编码)图像。这就是为什么您在导入 Unity 后会获得更大的尺寸。它计算总共有多少像素。

您仍然可以保留原始大小,前提是您将其保留为单独的资源并在运行时加载它。作为资源文件夹等中的外部资源。但是,它不会减少 RAM 或 GPU 中的内存使用量。

您导入到项目中的任何图像都将按其格式重新采样和编码。您在导入设置中看到的大小,这也是 ram 的大小。

JPEG 或 PNG 只是一种磁盘存储格式。您在 unity 中看到的大小是用于渲染的 Ram 中的大小。尺寸越大,它需要的内存也就越多。

如果您正在寻找更小的应用程序大小,Unity 的默认压缩将是最好的(没有 mipmap)。例如,当您导出为 apk 时,无论如何它都会重新压缩所有资产。

当然,您仍然可以将原始图像保留为外部源并在运行时加载它,但是根据我的经验,使用外部源的整体应用程序大小会非常庞大​​。

由于资源文件夹中的外部图像不会与应用资产一起压缩。


推荐阅读