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

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

转自:http://www.luzexi.com/unity3d之如何将包大小减少到极致/

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

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 ,尽量不要依赖他们,或用其他组件来代替。

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

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

重点来了,www.LoadFromCacheOrDownload在加载AssetBundle后会将其解压后的资源存储到本地文件夹中,这样虽然下载的包小,但解压后的包依旧很大。解决方法:首先将资源包打包中加密并命名为.bytes后缀,最后再加载是就不会被解压为资源存储再本地,因为它无法识别我们加密后的AssetBundle资源,再读取资源时需要使用AssetBundle.CreateFromMemory将,解码后的2进至数据变为我们可用的AssetBundle。

这个方法能灵活运用这如下方式:我将n个资源包加密后打包成n个2进至文件,再将这些加密文件再次打包成1个正常的AssetBundle文件,在使用www.LoadFromCacheOrDownload时从网络加载完成后,本地应用存储的就时n个我们加密后的2进至文件了,而并非被u3d解压后的正常的资源文件。这样做进一步缩小了本地资源的大小。

我经过实验计算了一下,一个不做任何压缩手段的有1G大小的u3d的app,压缩到极致,可以到150mb左右,而这个数字时整包大小。如果你做成我所说的三段加载,首包可以压到50mb以内,有些甚至30mb以内(不同游戏不一样,不同设计也不一样)。当然,这样做,整包可能会大一点,因为资源依赖被拆分了,所以资源重复还时避免不了的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100439.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Lombok插件的安装和使用「建议收藏」

    Lombok插件的安装和使用「建议收藏」IDEA中安装Lombok插件打开IDEA的Setting–>选择Plugins选项–>选择Browserepositories–>搜索lombok–>点击安装–>安装完成重启IDEA–>安装成功后重启IDEA引入lombok的jar包<dependency&

    2025年9月7日
    6
  • Mac os 安装Python Pycharm 配置环境「建议收藏」

    Mac os 安装Python Pycharm 配置环境「建议收藏」  主要就是这三个库的安装   importrequestsfrombs4importBeautifulSoupimporttime我是PYthon小白,自己把程序运行出来在环境配置走了不少弯路。因为我还安装了一台Windows环境,中间交叉做了其他一些事情,所以思路没有那么清晰。但是刚刚终于成功抓了数据。代码和程序运行成功截图放在最后。先说说环境配置,我会尽量回忆。我安装的是…

    2022年8月28日
    6
  • 酒店管理系统源码_客户管理系统源码

    酒店管理系统源码_客户管理系统源码(1)资源完全开放型:系统所有的资源,功能交由用户管理,权限控制到按钮,针对不同的用户,组装不同的界面,分配不同的使用功能.不放心再加权限到按钮。(2)系统突出以营销、预订、房源、房价等对营销具有影响力的信息处理。房价码可按年,季,月,周,日设定。(3)强化以客源为中心的信息完整性、长久性、可操作性。建立了客档为中心的用户信息管理系统。(4)使用数据穿透查询技术,对数据进行多元,多层次的查询.从汇中数据到明细发生,紧密联系在一起,灵活实用。(5)客档、角色、佣金、房价方案、授权折扣、操作权

    2022年9月24日
    3
  • 用Java IO流实现下载文件

    用Java IO流实现下载文件  @RequestMapping(value="download")   publicStringdownload(HttpServletResponseresponse,Modelmodel){             //通过文件名找出文件的所在目录      StringURL="D:/one/two.txt";      //得到要下载的文件…

    2022年5月30日
    51
  • SqlServer数据库备份与还原

    SqlServer数据库备份与还原最近需要给程序新增功能,用于将旧格式的数据转换为新格式,同时删除旧格式的数据(新旧格式的数据库表有部分重叠,同一份数据无法同时存在新旧格式的数据),由于测试环境中的测试数据不多,功能调试几次之后就没有旧格式的数据做测试了,因此想到在功能调试前先将测试数据库备份,然后功能调试之后再将测试数据库还原,这样就可以重复的进行功能调试。  数据库备份过程比较顺利,但是还原过程中出现错误,无论是还原数据库还是还原数据库文件都报错

    2022年5月15日
    42
  • 2021软件测试面试题及答案_2021年软件测试面试题大全

    2021软件测试面试题及答案_2021年软件测试面试题大全1.数据库增删改查基本上查询考的比较多,也有考察新增,修改,删除的,极个别的会给出表结构,字段要求,让你据此建表以及临时表查询语句主要考察子查询,聚合函数,多表查询,分组,可参考下面链接(sql50题)sql50题插入语句insertinto[table]([column],[column])values(?,?)删除语句deletefrom[table]wherecolumn=?修改语句update[table]setcolumn=?wherec

    2022年8月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号