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

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

你可以在刚刚完成一次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-11-05 20:31:29

Unity3D游戏开发之如何减少安装包大小的相关文章

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 需要这么做的目的和好处就不多说了. 第一步要做的就是:看看哪些文件是最占空

Unity3D游戏开发软件破解版安装

怎么获取Unity3D游戏开发软件,笔者在这里就告诉大家一个小技巧,有兴趣的朋友可以继续往下看. 下载Unity3D当然要到官网(建议用迅雷下载),安装后还需要注册,这里就建议大家根据实际情况考虑啦!如果是自己学习研究用,就没必要去购买,完全可以用破解版本;如果是公司开发用,还是买一个为好.注:Unity3D是按功能模块收费的. 没注册过Unity3D游戏开发软件的朋友,可以跟着以下步骤注册.这里我会提供一种破解法,需要破解版安装包的朋友请到菜鸟在线官网上注册并联系客服获取. 1.打开Unity

第一篇:Unity3d游戏开发之移动端完整包更新方案

由于Unity没法进行热更新,也就是局部更新,所以如果你在设计之前没有考虑好使用Lua,反射,或者其他方式实现热更新,但是又要面临游戏上线那么你可以考虑使用完整包更新,其实这对于游戏包不是很大的情况下,也是一个不错的选择,当然设计者在设计之初都想好了热更新那就宁当别论了. Unity3d 在移动端考虑Android和Ios平台的完整包更新 实现逻辑: 首先检查本地的版本和服务器的版本是否相同,如果相同则直接进入游戏,如果不同则下载服务器的最新文件,然后根据最新文件到资源服务器下载最新的安装包 我

Unity3D游戏开发之如何发布Android游戏

怎么在Unity3D游戏开发软件里,发布Android游戏?如果你感到有疑问,不如看看下面笔者的介绍. 新装的软件会自带一个demo,我们的讲解就是拿demo打不一款Android游戏,点击File -> build seting.如果你已经创建好一个场景需要发布,也可以加载进来跟着以下的步骤进行. 我们要发布到Android平台上,所以在这里就需要选择Android平台,再点击player settings.当然这里还需要你对游戏的部署信息进行写修改,值得注意的是:如果你使用的是破解版Unit

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

[Unity3D]Unity3D游戏开发之继续探索NGUI

大家好,我是秦元培.欢迎大家关注我的博客.我的博客地址是blog.csdn.net/qinyuanpei. 博主近期開始研究NGUI了,但是说实话,博主感觉NGUI的东西似乎有些分散,由于网上大部分的资料都仅仅是简单地解说怎样使用NGUI,并没有从实质性的原理出发来解说NGUI的内涵,这就和我们学习.NET仅仅会拖控件是一样的.并不能把握事物内在的东西.所以,博主推荐大家从官方提供的样例入手研究NGUI.博主这几天基本上都在看NGUI的演示样例程序,自我感觉内容比較杂吧.在今天的文章中,博主将讲

Unity3D游戏开发之伤害数值显示

众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念.游戏从某种意义上 是多种选择的组合,因此如果一个游戏失去平衡,那么就会减少选择而影响游戏的乐趣.数值策划人员通常需要按照一定的规则和方法将整个游戏系统的相关数值调整到一个合适的范围,以确保玩家可以有更多地选择以增强游戏的可玩性.数值策划是近年来国内游戏行业从国外游戏业引申过来的一个概念,我们在学习游戏设计的过程中,除了专注于技术上的实现以外,还应该对游戏设计中的相关理论有所了解

[Unity3D]Unity3D游戏开发之经典打砖块游戏的实现

大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 今天呢,我们来一起做一个怀旧版的经典游戏打砖块.相信每一个和博主同龄的人对于这个游戏都有着一种独特的情感吧.这个游戏是博主小时候掌上游戏机里面比较好玩的一个游戏,玩家需要通过控制屏幕下方的横条,通过一个小方块来消灭屏幕上方的砖块,玩家每消灭一个砖块,就能够得到一定的分数,当消灭完整个屏幕上的方块后,即可进入下一关,而且屏幕下方的横条长度会增长.那么,关于这个游戏就暂且介绍到这里,我们下面开

Unity3D游戏开发初探—2.初步了解3D模型基础

一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被.机械等等,比如一个大楼的3D模型图.3D模型也包括玩具和电脑模型领域. 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.网络游戏.虚拟社区.电子商务.远程教育等等.甚至对于旅游业,3D互联网也能