Unity 优化翻译官方文档(一) ------ 减少打包安装包的大小

20 篇文章 4 订阅

     官方地址 : https://docs.unity3d.com/Manual/ReducingFilesize.html


将构建应用程序的文件大小保持在最低限度是很重要的,特别是对于移动设备或应用程序商店来说,它们的大小限制。缩小规模的第一步是确定哪些资产对它贡献最大,因为这些资产最有可能是优化的候选对象。这些信息在您完成构建之后在编辑器日志中可用,切换到控制台窗口(菜单:窗口 -> 控制台),单击右上方的小下拉面板,选择Open Editor日志。

或者寻找此路径 : C:\Users\用户名\AppData\Local\Unity\Editor

编辑日志提供了按类型划分的资产的汇总,然后根据大小贡献列出所有的个人资产。通常,像纹理、声音和动画这样的东西占据了最多的存储空间,而脚本,水平和阴影通常会产生最小的影响。列表中提到的文件头不是资产——它们实际上是添加到“原始”资产文件的额外数据,以存储引用和设置。标题通常对资产大小的影响很小,但是如果在Resources文件夹中有大量的大型资产,那么它的值可能很大。

编辑器日志可以帮助您识别那些您可能想要删除或优化的资产,但是在您开始之前,您应该考虑以下内容:

  • 统一将导入的资产重新编码到它自己的内部格式中,因此源资产类型的选择是不相关的。例如,如果您在项目中有一个多层的Photoshop纹理,那么在构建之前它就会被压缩和压缩。将纹理导出为.png文件对构建大小没有任何影响,因此您应该坚持在开发过程中对您最方便的格式。
  • Unity在构建过程中去掉了大部分未使用的资产,因此您不会通过手动从项目中删除资产来获得任何东西。唯一没有删除的资产是脚本(无论如何都是非常小的)和资源文件夹中的资产(因为Unity无法确定哪些是需要的,哪些不是)。考虑到这一点,您应该确保资源文件夹中的唯一资产是您需要的游戏。您可以使用assetbundle来替换资源文件夹中的资产——这意味着Unity可以动态地加载资产,从而减少玩家的大小。

优化建议:

1.Textures

 纹理通常占据了构建的大部分空间。

  •   使用压缩的纹理格式Texture formats(已翻译官方文档)
  •   如果这不能减少文件的大小,试着减少纹理图像的物理大小(以像素为单位)。要在不修改实际源内容的情况下做到这一点,请在Project视图中选择纹理,在Inspector中窗口缩小Max Size。要想知道这在游戏中的效果,放大一个GameObject,它使用纹理,然后调整最大尺寸直到它在场景视图中变得更糟,改变最大纹理大小并不会影响你的纹理资产,只是它在游戏中的分辨率。

2.Meshes and Animations

你可以压缩网格和导入的动画片段,这样它们在你的游戏文件中占用更少的空间。为了启用网格压缩,选择网格,然后在Inspector窗口中设置网格压缩到低、中或高。网格和动画压缩使用量子化,这意味着它占用更少的空间,但是压缩会带来一些不准确的地方。试验一下您的模型可以接受什么样的压缩级别。

注意:网格压缩只产生较小的数据文件,并且在运行时使用更少的内存。

减少动画关键帧生成更小的数据文件,并在运行时使用更少的内存;一般来说,您应该总是启用它。

具体可以查看 : Unity 优化(三) ------ Animation Clips

3.DLLs

默认情况下,Unity只包含了内置播放器中的以下dll:

  • mscorlib.dll

  • Boo.Lang.dll

  • UnityScript.Lang.dll

  • UnityEngine.dll

当building a player,您应该避免对系统的任何依赖。dll或System.Xml.dll。Unity在默认情况下不包括这些内置播放器,但是如果你使用它们的类,它们就会被包括在内。这些dll为玩家的存储容量增加了1兆字节。如果您需要在游戏中解析XML,您可以使用Mono.Xml这样的库。zip作为系统库的一个较小的替代方案。虽然大多数通用容器都包含在mscorlib中,但是在系统中很少有其他的容器。如果可能的话,你应该避免这些。

4.减少mobile .NET library size

Unity为一些移动设备提供了两个。NET API兼容级别:.NET 2.0和.NET 2.0的一个子集。在Player Settings中为你的构建选择适当的级别。

.NET 2.0 API配置文件类似于完整的。NET 2.0 API。大多数库例程都是完全实现的,所以这个选项提供了与预先存在的。NET代码的最佳兼容性。然而,对于许多游戏来说,不需要完整的库,多余的代码占用了宝贵的内存空间。

为了避免浪费内存,Unity还支持。NET 2.0子集API配置文件。这与Mono“monotouch”配置文件非常相似,因此“monotouch”配置文件的许多限制也适用于Unity的。NET 2.0子集的概要文件。有关更多信息,请参阅 MonoTouch limitations的文档。许多在游戏中不需要的库例程被排除在这个概要文件之外,以节省内存。然而,这也意味着依赖于这些例程的代码不能正常工作。这个选项可以是一个有用的优化,但是您应该检查现有的代码在应用之后仍然有效。

 

个人认为前两项是非常有效的~

 

 

     

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值