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以内(不同游戏不一样,不同设计也不一样)。当然,这样做,整包可能会大一点,因为资源依赖被拆分了,所以资源重复还时避免不了的。

Unity3D之如何将包大小减少到极致相关推荐

  1. 抖音包大小优化-资源优化

    1.概述 随着业务的快速迭代,抖音 Android 端的包大小爆发式增长.包大小直接影响到下载转化率.推广成本.运行内存和安装时间等因素,因此对 apk 进行瘦身是一件很有必要且收益很大的事情.apk ...

  2. 【前端教程】抖音包大小优化-资源优化

    1.概述 随着业务的快速迭代,抖音 Android 端的包大小爆发式增长.包大小直接影响到下载转化率.推广成本.运行内存和安装时间等因素,因此对 apk 进行瘦身是一件很有必要且收益很大的事情.apk ...

  3. 神操作 之 「玲珑宝塔」优化 Apk 包大小

    九分喜欢,一分尊严,放弃你,也放过自己,愿你安好,在多年以后不要记起深爱你的我. 絮絮叨 工作不长不短,之前未曾考虑过深处,只是停留写出来了,便是完美. 而今的处境,不尴不尬,岁月刚好,背起行囊,继续 ...

  4. 今日头条优化实践: iOS 包大小二进制优化,一行代码减少 60 MB 下载大小

    摘要 苹果对 iOS App 大小有严格限制:下载大小超限会阻碍用户在蜂窝网络下载 App ,直接影响新用户转化:可执行文件超限将导致 App 审核被拒,直接影响上架.今日头条探索实践 __TEXT ...

  5. 基于clang插件的一种iOS包大小瘦身方案

    引子 \ 包瘦身,包瘦身,包瘦身,重要的事情说三遍. \ 最近公司一款iOS APP(本文只讨论使用Objective C开发的iOS安装包)一直在瘦身,我们团队的APP也愈发庞大了.而要解决这个问题 ...

  6. .NET Core 2.0应用程序大小减少50%

    .NET Core 2.0应用程序减小体积瘦身官方工具 IL Linker. IL Linker 来源于mono的linker  https://github.com/mono/linker,目前还是 ...

  7. android nio debug模式正常 release包crash_Flutter包大小治理上的探索与实践

    Flutter作为一种全新的响应式.跨平台.高性能的移动开发框架,在性能.稳定性和多端体验一致上都有着较好的表现,自开源以来,已经受到越来越多开发者的喜爱. 但是,Flutter的引入往往带来包体积的 ...

  8. 美团flutter_Flutter包大小治理上的探索与实践

    一.背景 Flutter作为一种全新的响应式.跨平台.高性能的移动开发框架,在性能.稳定性和多端体验一致上都有着较好的表现,自开源以来,已经受到越来越多开发者的喜爱.随着Flutter框架的不断发展和 ...

  9. Android 包大小优化总结

    Android 包大小优化总结 众所周知,尽量减少 APP 安装包的大小是非常必要的,减少安装包大小,不仅减少了用户下载时的网络流量消耗,而且还减少了用户的下载等待时间.更重要的是安装包大小也会影响下 ...

最新文章

  1. LINUX DNS服务的配置(一)
  2. 【性能优化】 之 HINTS 相关作业
  3. eclipse mybatis插件_Archetype插件的介绍和使用
  4. 一个想法不一定对 系列
  5. java 传送解析8583报文_java发送ISO8583报文接口案例
  6. 前端学习(1973)vue之电商管理系统电商系统之完成修改的操作
  7. 华为服务器清除系统日志,清空服务器日志
  8. ActiveRecord模式整理
  9. mybatis 二级缓存失效_给我五分钟,带你彻底掌握MyBatis的缓存工作原理
  10. [Unity] 3D数学基础 - 2D旋转矩阵
  11. 怎么用计算机按键弹歌谱,键盘钢琴及谱子(弹钢琴练打字一举两得)
  12. 硅谷华人天才CEO被开除,是否会有奇迹发生?
  13. 字符图形自动生成(C语言)
  14. 均方误差越大越好_均方误差准则.PPT
  15. 安装Cisco Packet Tracer
  16. 网贷风控体系之-风控模型
  17. 浅谈当下火热的ChatGPT
  18. 二叉树前序遍历、中序遍历、后序遍历、层序遍历的直观理解
  19. Python27的安装
  20. 检查两个时间段是否有时间重叠(允许重叠一部分时间不算重叠)

热门文章

  1. 1204big.th index.php,孟加拉 郵政編碼(郵遞區號)查詢 - 郵編庫(繁體)
  2. C++ 代码覆盖率分析工具
  3. 廖雪峰的GIT教程-读书笔记
  4. Nginx 菜鸟教程从初学到应用
  5. 关键点提取:face_recognition、疲劳检测、人脸校准、人脸数据库
  6. Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数
  7. 网校搭建完成,课程还需要设计吗?
  8. 復現suma++:最後一步 ./visualizer 報錯
  9. PostgreSQL in amp; = any (values|array)
  10. 揭开真实的加密币地下瑞士银行, 特种部队巡逻、罗斯柴尔德家族投资投资的背后堪比现实版007...