Unity3D如何减少安装包大小

译官方文档:http://docs.unity3d.com/Manual/ReducingFilesize.html 
PDF文档:http://www.rukawa.cn/Uploads/Attachment/ReducingFilesize/ReducingFilesize.pdf 
原文地址:http://www.rukawa.cn/index.php?s=/home/article/detail/id/27.html 
需要这么做的目的和好处就不多说了。

第一步要做的就是:看看哪些文件是最占空间的,那么它们就是首选优化对象了。

你可以在刚刚完成一次build之后在“Editor Log”中找到这些信息。

如何打开Editor Log: 

在Mac上看起来就是这样的了: 
 
可以看出这份log提供了一份资源总括:各种类型资源的总大小,以及所占百分比。同时还降序列出了单个文件的大小。

顺带一提,资源类型中的“File headers”它们并不是资源本身,而是加在原始资源上,用来存储“引用”与“配置信息”的额外数据。通常可以忽略这些数据的大小,但如果在你的“Resources”文件夹里有着十分庞大的资源文件的话,这些数据也可能会很大。。

这份log可以帮助你鉴定哪些文件是你或许想要删掉或者进行优化的。

不过在开工之前,还需要先了解几点:

1、Unity再编码会把资源导成它自己的内部格式,所以资源源文件的类型是不相干的。比如你有一个多图层的PS纹理,那么在build之前它就会被拼接、压缩。所以刻意把这份纹理转成PNG格式其实对减少包大小并没有帮助。在开发时还是用最方便的格式就好了。

2、Unity会在build时去掉那些你的项目中没有使用到的资源,所以不需要我们手动找出来删掉了。但是脚本是不会被删掉的(不过它们不占资源),还有“Resources”文件夹里的全部资源,也是不会自动帮你删除的(因为Unity无法判断这里面哪些是需要用到的)。所以我们要确保“Resources”文件夹里的都是我们真正要用到的。当然,你还可以通过动态加载AssetBundles的方式来代替“Resources”文件夹里的资源,以减少包大小。

一些建议:

纹理(Textures)

纹理通常会占据大部分空间。第一步要做的就是选用经压缩的纹理格式(DXT 或者 PVRTC)。如果这样没有减少它的所占用空间,那么试试缩小纹理的尺寸吧。你不需要对资源本身进行修改,只要在 Project 下选中纹理,然后在 Inspectpr 下设置Max Size就行了。

 
有一个好办法就是:在场景中找到使用了该纹理的object,放大画面,然后一边降低 Max Size ,一边看场景中的object,直到它看起来比较糟糕,就可以知道怎样是最合适的了。。 
 
 
 
 
 
 
 
 
由以上几张图对比来看,我们就能发现,选择512甚至256的Max Size,效果都是可以的,而且资源大小也能有显著的减少。修改纹理的Max Size并不会影响到资源本身,只是改变了它在游戏里的分辨率。下表列出了不同图片格式所占用空间的大小(单位bpp:字节/像素) 
 
一张图片的大小计算公式:width * height * bpp,如果你使用的是mipmap贴图,那么其大小将是普通图片的3倍左右。

Unity默认在导入纹理时就会进行压缩,为了在开发时节约时间,我们可以在偏好设置里手动关掉此功能 
 
而在build时,Unity不管你有没有勾选这一项,都会对纹理进行压缩。

网格与动画(Meshes and Animations)

网格与导入的动画(Animation Clips)都可以被压缩。在选中一个模型之后,就可以在Inspector中进行设置了。

 
不过对它们进行压缩,是可能造成误差的。所以最好先弄清楚什么程度的压缩是可接受范围内的。另外,mesh的压缩仅仅是减少数据文件的大小,并不会减少运行时的内存消耗。而减少动画关键帧,则会让两者都有所减少,一般情况下我们都应该开启。 

动态链接库(DLLs)

默认情况下,Unity只会在build时包含以下dll:

 
我们应该避免对 System.dll 或者 System.Xml.dll 有所引用,否则还是会在build时包含进来,而它们也会占用数M的空间。

如果在游戏中确实需要解析XML,那么可以使用“Mono.Xml.zip”来代替系统级的dll。此外,大多数泛型容器都已经包含在标准库中,只有少数几个在System.dll里,所以可能的话,也应该避免使用到它。

减少手机上使用的 .NET 库的大小

Unity为移动设备提供了两套 .NET 的API:.NET 2.0 和.NET 2.0 Subset

.NET 2.0 提供了几乎整套的API功能,但是很多时候游戏都用不上那么多,导致大量多余的代码占用了宝贵的空间资源。为了避免浪费,我们就可以用Unity提供的 .NET 2.0 Subset(相当于.NET 2.0的一个子集)。为节省资源,这里面很多一般用不到的例程库都被移除了,所以这一优化也会是很有用的,只是需要确保我们的代码能够正常工作。 
可在“Player Settings”中进行设置

时间: 2024-10-10 05:04:23

Unity3D如何减少安装包大小的相关文章

Unity3D游戏开发之如何减少安装包大小

第一步要做的就是:看看哪些文件是最占空间的,那么它们就是首选优化对象了. 你可以在刚刚完成一次build之后在"Editor Log"中找到这些信息. 如何打开Editor Log: 在Mac上看起来就是这样的了: 可以看出这份log提供了一份资源总括:各种类型资源的总大小,以及所占百分比.同时还降序列出了单个文件的大小. 更多精彩请点击[狗刨学习网] 顺带一提,资源类型中的"File headers"它们并不是资源本身,而是加在原始资源上,用来存储"引用

iOS - ipa安装包大小优化

在App Store上显示的下载大小和实际下载下来的大小,我们通过下表做一个对比: iPhone型号 系统 AppStore 显示大小 下载到设备大小 iPhone6 10.2.1 91.5MB 88.9MB iPhone6 10.1.1 91.5MB 88.9MB iPhone6 9.3.5 91.5MB 84.8MB iPhone 5 9.2 91.5MB 84.8MB iPhone6 plus 10.0.2 95.7MB 93.2MB iPhone7 plus 10.3.0 95.7MB

iOS安装包瘦身的那些事儿

在我们提交安装包到App Store的时候,如果安装包过大,有可能会收到类似如下内容的一封邮件: 收到这封邮件的时候,意味着安装包在App Store上下载的时候,有的设备下载的安装包大小会超过100M.对于超过100M的安装包,只能在WIFI环境下下载,不能直接通过4G网络进行下载. 在这里,我们提交App Store的安装包大小为67.6MB,在App Store上显示的下载大小和实际下载下来的大小,我们通过下表做一个对比: iPhone型号 系统 AppStore 显示大小 下载到设备大小

一种Android的多平台的安装包打包方法探究

继 Google I/O 宣布新系统 Android L 带来 64 位支持后,Android NDK 日前正式推出 Revision 10 更新,添加 ARM.x86 和 MISP 架构芯片的 64 位 ABI 支持. 因而,全部ABI个数至少达到了8个.如果每个平台的链接库大小达到10M,加起来就达到了80兆,如果直接安装进手机,则会浪费手机的宝贵的存储空间.当然,在云时代,又有了一种方案,安装后在从云端下载,问题又来了,云端下载下来需要流量或宽带,同时还要对云端进行维护,问题也不小.还有一

LANMPS 一键PHP环境安装包(转)

转:http://www.lanmps.com/ LANMPS 一键安装包,php绿色环境套件包: https://github.com/foxiswho/lanmps 安装 Mar 17, 2017 LANMPS 一键安装包,php绿色环境套件包 Linux+Nginx+Mysql+PHP+Elasticsearch ( phpmyadmin+opencache+xdebug )环境套件包,绿色PHP套件,一键自动安装 系统需求 系统:Linux下CentOS,RedHat,Ubuntu 内存

趋势:手游安装包压缩 用户转化率提高

近些年,掌上游戏时代已经成为全民风尚,但身为游戏开发商考虑过手游安装包大小与用户转化率之间的关系吗? 随着手机游戏市场发展愈发壮大,行业发展愈加成熟,手游厂商愈来愈多,手游产业也进入了优胜劣汰的环节,产业的阵痛也凸显了出来.手游安全.用户体验度.优质游戏包体太大.游戏版本更新导致用户流失等等,这些都与手游厂商生存息息相关. 尤其是游戏包体的大小直接关系到了游戏厂商推广渠道的成本问题.想要高质量,意味着包体变大,压缩包体却会有损游戏质量,这样的难题在手游行业由来已久.不同类型的游戏都有其包体体积的

Unity3d游戏安装包 极限减少之 四分图、二分图 (NGUI向)

在这个酒香也怕巷子深,游戏不打广告不买用户不刷榜就会死的时代.每个游戏代理都想让CP提供的安装包越小越好,能99M绝对不要100M.但是游戏开发商们在一遍一遍踢出无用的资源,一点一点得把游戏包扣小,发现大小还是减不下来,该怎么办,这时只有拿美术资源开刀了. 我们来看下面两张图片,是从暗黑战神中抠出来的. 转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn (PS:从解包安装包分析,暗黑战神已经用了此文所说的二分优化方法) 转自htt

竞品技术三瞥安装包的大小

1 从几件小事说起 春节在家帮姐姐的iPhone手机安装市面上形形色色的App,忘记她是使用4G流量包月了,于是在下载了10个App后,不但耗尽了流量,还按照0.3元/兆的价格扣了七八十元话费.后来我检查了这几个App的体积,发现每个App体积都是40-50M的样子,这让我很吃惊,因为我记得两年前这些App也就在10-20M的样子. 另一件记忆犹新的事情,是去公园景点游玩,当时公园门口有个活动“扫二维码下载App下单立减10元”,但是我发现下载这个40M的App要花费12元的流量,这样其实是要额

Unity3D之如何将包大小减少到极致

Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解的请看<unity3d-texture图片空间和内存占用分析>.因为u3d对资源的压缩并不阐述的十分详细,所以很多项目在遇到包大小瓶颈时非常头疼.我也不是神仙,也同样痛苦过,但经历几个项目的折腾,最终能梳理出一套能将u3d包大小减少到合理范围的方法. 首先来展示下,官方如何说的: (http://docs.unity3d.com/Manual/ReducingFilesi