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

转载 2015年07月10日 11:40:29

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

首先来展示下,官方如何说的:

http://docs.unity3d.com/Manual/ReducingFilesize.html 官方手册)

1.替换jpg,使用psd,减少重复资源

2.剔除不必要的资源

3.打包时查看log纪录,由此判断需要减少的文件类型

4.优化,压缩图片,减少图片大小

5.优化,压缩网格和动画,减少文件大小

6.剔除system.dll和system.xml.dll ,尽量不要依赖他们,或用其他组件来代替。

这些官方解释对我们帮助甚少。我把包分成三段:1.首包(里面包含了最最必要的资源)。2.首次进入包加载(加载游戏运行必要的资源)。3.游戏运行中资源加载(按每个游戏不同各自定义,以场景和单位个体为主要,在画面进入时加载资源,加载结束后再运行并显示)。

关于u3d的AssetBundle资源加载与打包封装,请查看《unity3d之assetbundle资源加载封装》这篇文章。

下面说说关于动态资源加载和资源导入内存的所有方式,这是优化资源的必要条件,因为只有你知道了所有的加载和导入途径你才能对项目资源优化进行全面的分析。知道了有哪几条路你才能选择一条最好的。如下:

利用动态资源加载有几种方式:

1.将资源放入assetstream文件夹随打包一起打入文件。

2.将部分资源放在服务器,游戏前或游戏中进行加载,并保存到本地。

3.将资源压缩成多个zip文件放在服务器,客户端下载这些zip文件合成一个zip文件进行解压。

其实www.LoadFromCacheOrDownload加载机制也可以算一种,但好像u3d4.5.2开始已经摒弃这个接口,不再开放,因为它也开始意识到这个接口容易给人造成误解,而且不好用。

资源导入内存的方式有几种:

1.从Resources文件夹中导入。这是阻塞加载最常见的方式,接口Resources.Load();

2.从某地址加载资源www。这是异步加载最常见方式,接口new www(path);

3.直接从文件或者bytes[]生成AssetBundl,接口:AssetBundle.CreateFromFile阻塞方法, AssetBundle.CreateFromMemory异步方法,AssetBundle.CreateFromMemoryImmediate阻塞方法

4.使用File类加载文件,File.ReadAllBytes,File.ReadAllText。

有了资源加载和内存导入后,还需要配备资源验证方式,这样整个项目动态加载体制才完善。资源版本更新方式可以使用json格式并以文件形式查看。验证方式的理解,还需要大家使用在项目里才能体会到真正的用途,才能将原理牢记于心。

验证资源版本有几种:

1.资源整体验证。步骤:1.客户端向服务器发送资源版本。2.服务器匹配最近版本号,若版本号不同,比较两个版本号之间的内容差异,发送差异资源地址。3.客户端删除差异内容中需要删除的文件资源,加载需要下载的文件资源并保存文件。最后保存版本号。

2.单个资源文件的时间戳验证。步骤:1.客户端向服务器发送资源版本号。2.服务器匹配最新版本号,如果不同就重新发送一份资源版本列表,里面包含了资源文件的时间戳。3.保存版本列表。4.在客户端需要加载该资源时比较时间戳是否一致,如果不一样或这不存在就加载资源文件并保存固定时间戳。

3.单个资源文件md5验证。步骤:1.客户端向服务器发送资源版本号。2.服务器匹配最新版本号,如果不同重新发送一分资源版本列表,里面包含了资源文件的md5码。3.客户端比较新旧资源版本列表中的,删除需要删除的和更新的资源。4.在客户端需要加载该资源时查看文件是否存在,如果存在就说明资源是最新的。如果不存在则需要实时下载。

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

减少资源包的大小
  • sgnyyy
  • sgnyyy
  • 2014年08月24日 20:34
  • 1878

【Unity3D游戏开发】性能优化之如何将包大小减少到极致(三六)

Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解的请看《unity3d-texture图片空间和内存占用分析》。因为u3d对...
  • teng_ontheway
  • teng_ontheway
  • 2016年04月01日 00:31
  • 1453

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

第一步要做的就是:看看哪些文件是最占空间的,那么它们就是首选优化对象了。 你可以在刚刚完成一次build之后在“Editor Log”中找到这些信息。 如何打开Editor Log: ...
  • book_longssl
  • book_longssl
  • 2015年02月04日 10:11
  • 1751

unity优化《三》--将包大小减少到极致

一:官方介绍 (http://docs.unity3d.com/Manual/ReducingFilesize.html 官方手册) 1.替换jpg,使用psd,减少重复资源 2.剔...
  • lalate
  • lalate
  • 2017年10月16日 22:10
  • 284

unity减小包的体积

同样的文件ios导出的比android的大好多。tk2d做了一个中文字体2048x2048就是4x8x2048x2048=16M(一个像素4个字节rgba一个8bit)。 但是导出的android包一...
  • skillart
  • skillart
  • 2016年03月27日 23:42
  • 1519

如何将apk大小减少

转载:如何做到将apk大小减少6M如何做到将apk大小减少 我们的apk去年业务需求增长迅速,伴随而来的是apk大小由年初的20M以下,增长到年底的30M。包大小增长的坏处有:1.过大的下载包会降低...
  • louyxlovess
  • louyxlovess
  • 2017年06月15日 17:18
  • 168

unity3D游戏开发制作如何减少安装包大小

第一步要做的就是:看看哪些文件是最占空间的,那么它们就是首选优化对象了。 你可以在刚刚完成一次build之后在“Editor Log”中找到这些信息。 如何打开Editor Log: ...
  • juan_bo
  • juan_bo
  • 2016年12月29日 10:33
  • 440

Unity如何将包缩小到极致

转载自:http://www.luzexi.com Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解的请看《u...
  • yuxikuo_1
  • yuxikuo_1
  • 2015年10月28日 23:01
  • 494

减少unity包大小

官方文档:https://docs.unity3d.com/Manual/ReducingFilesize.html 主要点有: 1、build包之后,在windows-console打开的右上角...
  • wenmingchan
  • wenmingchan
  • 2017年02月06日 15:05
  • 522

项目总结之优化游戏包大小

很多时候,渠道和发行都会向开发人员提出游戏包要压缩到XXMB一下的时候,对方的潜台词并不是让开发人员降低游戏质量来完成这个目标,而不是一定要保证质量的前提下,把包体压缩到极限范围。如果做不到对方要求,...
  • Dionysos_lai
  • Dionysos_lai
  • 2015年03月02日 20:11
  • 2924
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3D之如何将包大小减少到极致
举报原因:
原因补充:

(最多只允许输入30个字)