【问题标题】:Unity build project game 2d to apk with huge size because texturesUnity 将项目游戏 2d 构建为具有巨大尺寸的 apk,因为纹理
【发布时间】:2015-08-05 12:59:01
【问题描述】:

我有一个项目统一游戏 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...等等。所有信息都太大了,无法与窗口中的实际大小进行比较。

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

【问题讨论】:

    标签: unity3d textures


    【解决方案1】:

    仅仅因为您的资源文件大小可能为 X mb,并不意味着这些资源的最终构建将是相同的大小。当 Unity3D 压缩这些资源时,会出现一些麻烦。要尝试减小尺寸,您可以尝试以下方法;

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

    2) 禁用 mip-maps。 Mip-maps 将使您的资源大小增加大约 25%。如果您启用了它们,但不需要,您可以在这里节省大量空间。不过,有一个警告,iOS 曾经包含一个错误,这意味着即使禁用了 mip-map,iOS 仍然会分配 25% 的空间。不确定是否已解决。

    3) 从资源文件夹中删除 Atlas 中的资产。默认情况下,Unity3D 会将资源文件夹中的所有内容推送到最终构建中,即使您没有使用这些资源。所以尝试一次大扫除,确保里面只有你需要的东西。如果图像在 Atlas 中,则不再需要将其包含在最终构建中。

    4) 使用更多更小的 Atlas'。如果您继续添加到地图集,它的大小会呈指数增长。 1024x1024、2048x2048、4096x4096 等。问题是,您可能没有使用所有这些空间,而 Atlas 有数百或数千像素的空白空间。不过,这些数据仍然需要记录并保存在某个地方。确保您的 Atlas 高效使用

    5) 重新调整图像以适合您的目的。如果你有一个巨大的背景图片填满了整个屏幕——但在任何时候你总是有很大一部分被你的游戏或其他功能覆盖,那么为什么不改变图片来删除那些未使用的区域呢?如果图像总是在某个点被绘制并且您仍然包含该像素信息 - 那么这是一种浪费。这样做可能会导致 2-3 张图像“构成”整个背景,例如切掉中间或外边缘区域。

    6) 调整图像尺寸。您似乎针对的是移动设备。那么你的资源是否适用?对于分辨率较低的小屏幕尺寸,4k 图像毫无意义。也许您可以整体减小图像尺寸。

    【讨论】:

    • 嗯,你有没有试过用Unity2D构建一个空项目。即使是空项目也需要 18 mb。所以我认为要么默认 APK 越来越大,要么 Unity 播放器添加了更多东西???
    【解决方案2】:

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

    当您单击精灵/纹理时,您会在检查器中看到“最大尺寸”和“格式”选项。

    我不得不修改这些设置(降低最大尺寸,使用 16 位格式而不是真彩色),并尝试使用 PNG 并切掉所有无效的画布空间。

    【讨论】:

    • 我在iOS中构建项目,它并不重。请您向我解释为什么统一压缩比实际尺寸更大的纹理。谢谢
    • 这可能比我能更好地解释你的问题。 answers.unity3d.com/questions/267019/…
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多