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

问题描述 投票:5回答:2

我有一个unity游戏2D的项目,当我用70MB的apk建立它的时候,我觉得它对我的游戏来说太大了,我试着在我的Assets/Resources文件夹中删除一些图片(游戏背景的纹理),大约6MB(因为我的游戏根据当前的等级动态加载资源)。

我试着在我的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
 .....
 .....

我在Unity2d中使用NGUI创建UI,所以我有一些图集文件,但是在窗口中看到AssetsAtlasMainUIAtlas.png只有734KB,为什么Unity要把它压缩到21.3MB?为什么Unity要把它压缩成21.3MB?

还有AssetsResourcesBackgroundsA.jpg只有194KB,Unity却压缩了12MB...等等。所有的信息都太大了,无法与窗口中的实际大小相比。

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

unity3d textures
2个回答
6
投票

仅仅因为你的资源文件可能是X MB大小,并不意味着这些资源的最终构建将是相同的大小。当Unity3D压缩这些资源的时候,会有一些手忙脚乱的情况发生。要尝试降低你的大小,你可以尝试以下方法。

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

2) 禁用mip-maps。Mip-maps会使你的资源增加大约25%的大小。如果你启用了它们,但在没有需求的情况下,你可以在这里节省很多空间。但要注意的是,iOS曾经包含一个bug,即即使禁用mip-maps,iOS仍然会分配25%的空间。不知道现在是否已经修复了。

3)从资源文件夹中删除Atlas中的资产。默认情况下,Unity3D会将你资源文件夹中的所有内容推送到你的最终构建中,即使你没有使用这些资产。所以,试着进行一次春季清理,确保只有你需要的东西在里面。如果一张图片在Atlas中,那么它就不需要再被包含在最终构建中了。

4)使用更多小一点的Atlas'。如果你不断地添加到图集中,它的大小就会成倍地增加。1024x1024,2048x2048,4096x4096等等。问题是,你可能不会使用所有的空间,而图集有几百个甚至几千个像素的空白空间。不过这些数据还是要记录下来并保存在某个地方。确保你的Atlas的效率。

5) 重新调整你的图像以适应你的目的。如果你有一个巨大的背景图片,填满了整个屏幕--但在任何时候,你总是有很大一部分被你的游戏或其他功能所覆盖,那么为什么不改变图片以去除那些未使用的区域呢?如果一张图片总是在某一点上被画过来,而你还在包括那些像素信息--那么这就是一种浪费。这样做可能会导致2-3张图片 "组成 "整体背景,例如剪掉中间或外缘区域。

6) 调整你图片的尺寸。你的目标似乎是移动端。那么你的资源适用吗?对于分辨率较低的小屏幕尺寸来说,4k的图片是没有意义的。也许你可以整体减少图片尺寸。


1
投票

我在尝试发布一个spriteexture重度游戏时也遇到了同样的问题.你必须在Inspector里面改变每张图片的渲染设置。

当你点击一个spriteexture时,你会在检查器中看到 "最大尺寸"&"格式 "选项。

我不得不乱用这些设置(降低最大尺寸,使用16位格式而不是truecolor),并尝试使用PNG和削减任何死帆布空间。

© www.soinside.com 2019 - 2024. All rights reserved.