我有一个2D项目统一游戏。当我用70 MB的APK构建它时,我认为我的游戏太大了。
我尝试删除文件夹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,所以我有一些 map 集文件。
但是,当我在窗口中看到Assets/Atlas/MainUIAtlas.png时,它只有734KB。为什么Unity用21.3MB压缩它?
而且Assets/Resources/Backgrounds/A.jpg仅为194KB,但Unity压缩为12MB ...等等。所有信息太大,无法与窗口中的实际大小进行比较。
我是新来的Unity,请帮助我解释并告诉我如何解决此问题。
非常感谢。
最佳答案
仅仅因为您的资源文件的大小可能是X mb,并不意味着这些资源的最终版本将是相同的大小。 Unity3D压缩那些资源时,会出现一些麻烦。要尝试减小尺寸,可以尝试以下操作;
1)使用较低质量的压缩设置。我曾经只使用ARGB32,但那真是太庞大了!您可能想尝试16位。根据您的资源,您可能根本不会注意到质量下降,但是尺寸会减小。
2)禁用Mip贴图。 Mip-map将使您的资源大小增加大约25%。如果启用了它们,但是不需要,则可以在此处节省很多空间。但是警告是,iOS曾经包含一个错误,这意味着即使禁用了mip-map,iOS仍然仍然会分配25%的空间。不确定是否已解决。
3)从“资源”文件夹中删除Atlas中的 Assets 。默认情况下,即使您不使用这些资源,Unity3D也会将Resources文件夹中的所有内容推送到您的最终版本中。因此,请尝试进行 Spring 大扫除,并确保其中只有您需要的东西。如果图像位于Atlas中,则不再需要将其包含在最终版本中。
4)使用更多的较小的Atlas。如果您继续添加 map 集,则其大小将成倍增加。 1024x1024、2048x2048、4096x4096等。问题是,您可能没有使用所有的空间,而Atlas有数百或数千个像素的空白空间。该数据仍然必须记录并保存在某个地方。确保您使用Atlas的效率高
5)重新调整图像以适合您的目的。如果您有一个充满整个屏幕的巨大背景图像-但是在任何给定时间点,您的游戏或其他功能总会覆盖很大一部分背景图像,那么为什么不更改图像以删除那些未使用的区域呢?如果始终在某个点绘制图像,而您仍在包含该像素信息-那就浪费了。这样做可能会导致2-3张图像“组成”整个背景,例如切出中间或外部边缘区域。
6)调整图像尺寸。您似乎定位到了移动设备。那么您的资源是否适用?对于分辨率较低的小尺寸屏幕,没有4k图像是没有意义的。也许您可以整体减小图像尺寸。
关于unity3d - 由于纹理,Unity将项目游戏2d转换为具有巨大尺寸的apk,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30414732/