首页 文章

Unity 构建项目游戏 2d 到 apk 具有巨大的尺寸,因为纹理

提问于
浏览
5

我有一个项目团结游戏 2d。当我在 apk 中使用 70 MB 构建它时,我认为它对我的游戏来说太大了。

我尝试在我的文件夹 Assets\Resources 中删除一些大约 6MB 的图片(游戏背景的纹理)(因为我的游戏加载资源动态地基于当前级别)。然后将其重建为 apk。它获得 30MB。我很好奇。

当我用 70MB 构建 apk 时,这是编辑器日志

Textures      182.1 mb   95.7% 
Meshes        0.0 kb     0.0% 
Animations    0.0 kb     0.0% 
Sounds        1.1 kb     0.0% 
Shaders       42.5 kb    0.0% 
Other Assets  594.9 kb   0.3% 
Levels        485.3 kb   0.2% 
Scripts       1.2 mb     0.6% 
Included DLLs 5.1 mb     2.7% 
File headers  791.0 kb   0.4% 
Complete size 190.3 mb   100.0% 

Used Assets, sorted by uncompressed size:
 21.3 mb     11.2% Assets/Atlas/MainUIAtlas.png
 16.0 mb     8.4% Assets/Atlas/SupportItems.png
 12.0 mb     6.3% Assets/Resources/Backgrounds/A.jpg
 12.0 mb     6.3% Assets/Resources/Backgrounds/B.jpg
 12.0 mb     6.3% Assets/Resources/Backgrounds/C.jpg
 12.0 mb     6.3% Assets/Resources/Backgrounds/D.jpg
 9.0 mb  4.7% Assets/Resources/Map/bg_map3.jpg
 9.0 mb  4.7% Assets/Resources/Map/bg_map2.jpg
 9.0 mb  4.7% Assets/Resources/Map/bg_map1.jpg
 9.0 mb  4.7% Assets/Resources/Map/bg_map4.jpg
 8.0 mb  4.2% Assets/Resources/MainMenu/BG1.png
 6.8 mb  3.5% Assets/Resources/MainMenu/BG2.png
 .....
 .....

我使用 NGUI 在 Unity2d 中创建 UI,所以我有一些 atlas 文件。但是,当我在窗口看到它时,Assets/Atlas/MainUIAtlas.png 只有 734KB。为什么 Unity 用 21.3MB 压缩它?

并且 Assets/Resources/Backgrounds/A.jpg 只有 194KB,但 Unity 用 12MB...so 打开它。所有信息都太大,无法与窗口中的实际大小进行比较。

我是新的 Unity,请帮我解释并告诉我如何解决这个问题。非常感谢。

2 回答

  • 6

    仅仅因为您的资源文件大小可能是 X mb,并不意味着这些资源的最终构建大小相同。当 Unity3D 压缩这些资源时,会有一些 hanky-panky 继续存在。要尝试降低尺寸,您可以尝试以下方法;

    1. 使用较低质量的压缩设置。我以前只使用 ARGB32,但那是巨大的!你可能想尝试 16 位。根据您的资源,您可能根本没有注意到任何质量下降,但尺寸将减少。

    2. 禁用 mit-maps。 Mit-maps 会使资源的大小增加约 25%。如果你启用它们,但没有必要,你可以在这里节省大量空间。但是一个警告,iOS 曾经包含一个错误,意味着即使使用 mit-maps 禁用 iOS 仍然会分配 25%的空间。不确定是否已修复。

    3. 从 Resources 文件夹中删除 Atlas 中的资产。默认情况下,Unity3D 会将 Resources 文件夹中的所有内容都推送到最终版本中,即使您没有使用这些资源也是如此。所以试试春季清洁,并确保只有你需要的东西。如果图像在 Atlas 中,则不再需要将其包含在最终构建中。

    4. 使用更小的更多 Atlas'。如果你继续添加到地图册,它的大小会呈指数增长。 1024x1024,2048x2048,4096x4096 等等。问题是,你可能没有使用所有这些空间,Atlas 有几百甚至几千像素的空白空间。这些数据仍然需要记录并保存在某处。确保你的 Atlas 效率很高

    5. Re-jig 您的图像以满足您的目的。如果你有一个巨大的背景图像填满整个屏幕 - 但在任何给定的点你总是有很大一部分由你的游戏或其他功能覆盖,那么为什么不改变图像去除那些未使用的区域?如果图像总是在某一点被绘制而你仍然包含那些像素信息 - 那么这就是浪费。例如,这样做可能会导致 2-3 图像“组成”整个背景,从而切断中间或外边缘区域。

    6. 调整图像尺寸的大小。你好像是针对移动设备。那么您的资源适用吗?对于具有较低分辨率的小屏幕尺寸,没有必要使用 4k 图像。也许你可以整体减少图像尺寸。

  • 1

    我试图发布 sprite/texture 重游戏时遇到了同样的问题。您必须更改 Inspector 中每个图像的渲染设置。

    单击 sprite/texture 时,您将在检查器中看到“最大尺寸”和“格式”选项。

    我不得不乱用这些设置(降低最大尺寸,使用 16 位格式而不是真彩色),并尝试使用 PNG 并删除任何死画布空间。

相关问题