无法在 Unity 中优化巨大的 Sprite Sheet

Can't Optimize Huge Sprite Sheet in Unity

我震惊地发现我刚刚创建的一个游戏占用了惊人的 330 兆字节。根据编辑日志,我的纹理是罪魁祸首:

从列表的顶部开始,我使用 Chieftain Walk 动画 spritesheet。该文件很大,所以我在 Photoshop 中打开它并大幅降低了图像分辨率。

然而,即使在 Photoshop 中保存之后,编辑器日志仍声称纹理占用相同数量的内存。我做错了什么,编辑器日志什么时候更新?是在构建游戏时吗?非常感谢。

首先,您不需要降低实际 PNG 文件的分辨率。当 Unity 构建播放器时,它会将导入的未压缩文件存储在可执行文件附近的 Data 文件夹中。纹理的大小将与导入器设置中的一样。如果我没记错的话,默认情况下它是 2048x2048。如果更改纹理的导入器设置,PNG 文件将保持不变(在编辑器中),但纹理对象(实际独立使用)将变得更小。

此外,您没有将其平方的原因是什么?像 512x512。始终将其设为正方形和 2 的幂。否则,Unity 将无法对您的精灵进行任何优化

编辑:

这是纹理导入设置,将最大大小设置得更低,您的游戏将占用更少的内存(在硬盘驱动器和 RAM/GPU 中,当游戏为 运行 时)。您还可以添加压缩级别,它会占用更少的内存,但加载时间会更长(在游戏中)。加载时将占用与未压缩时相同的 RAM/GPU 内存量。赢在应用程序大小上,输在加载性能上。 (测试一下,然后选择最适合你的)

为什么是 2 和平方的幂,嗯:

通过确保纹理尺寸是 2 的幂,图形管线可以利用与 2 的幂工作效率相关的优化。例如,除以和乘以 2 的幂可能会更快。 Unity 也更容易创建 mip-maps(如果纹理不是正方形,它们可能会占用更多内存)。互联网上有很多关于 mip-mapping 的资源。