Unity Asset Bundle Browser 工具
Social API

减小构建的文件大小

Keeping the file size of the built app to a minimum is important, especially for mobile devices or for app stores that impose a size limit. The first step in reducing the size is to determine which Assets contribute most to it, because these Assets are the most likely candidates for optimization. This information is available in the Editor Log just after you have performed the build. Go to the Console window (menu: Window > General > Console), click the small drop-down panel in the top right, and select Open Editor Log.

执行构建后打开的 Editor 日志
执行构建后打开的 Editor 日志

Editor 日志提供按类型细分的资源摘要,然后按大小比例顺序列出所有各个资源。通常,纹理 (Textures)、声音 (Sounds) 和动画 (Animations) 等内容占用的空间最多,而脚本 (Scripts)、关卡 (Levels) 和着色器 (Shaders) 一般影响最小。列表中显示的__文件标头 (File headers)__ 不是资源,实际上是添加到“原始”资源文件的额外数据,用于存储引用和设置。这些标头通常与资源大小差别很小,但如果在 Resources 文件夹中有许多大型资源,则该值可能会很大。

Editor 日志有助于识别可能要删除或优化的资源,但在开始之前应考虑以下事项:

  • Unity 将导入的资源重新编码为其自己的内部格式,因此源资源类型的选择不是相关因素。例如,如果项目中有一个多层 Photoshop 纹理,在构建之前将其展平并压缩。将纹理导出为 .png 文件对构建大小没有任何影响,因此应该坚持使用在开发过程中最方便的格式。

  • Unity 在构建期间会剥离大多数未使用的资源,因此无法通过从项目中手动删除资源来获得任何优化效果。唯一不会删除的资源是脚本(但无论如何,这些脚本通常都非常小)和 Resources 文件夹中的资源(因为 Unity 无法确定哪些是需要的,而哪些不是)。考虑到这一点,应确保 Resources 文件夹中的所有资源都是游戏所必需的资源。也许可以使用 AssetBundle 替换 Resources 文件夹中的资源;这样一来,Unity 就会动态加载资源,从而减小播放器大小。

关于减小构建大小的建议

纹理

纹理通常在构建中占据最多空间。第一个解决方案是使用压缩的纹理格式。请参阅有关特定于平台的纹理压缩的文档以了解更多信息。

如果这样做不足以减小文件大小,请尝试减小纹理图像的物理大小(以像素为单位)。若要在不修改实际源内容的情况下执行此操作,请在 Project 视图中选择该纹理,然后在 Inspector 窗口中减小 Max Size。要查看纹理在游戏中的外观,请放大使用该纹理的游戏对象,然后调整 __Max Size__,直至该纹理在 Scene 视图中的外观开始变差。更改最大纹理大小不会影响纹理资源,只会影响纹理在游戏中的分辨率。

更改最大纹理大小不会影响纹理资源,只会影响纹理在游戏中的分辨率
更改最大纹理大小不会影响纹理资源,只会影响纹理在游戏中的分辨率

默认情况下,Unity 在导入时会压缩所有纹理。要在 Editor 中加快工作流程,请选择 Unity < Preferences 并取消选中 Compress Assets on Import 的复选框。无论此设置如何,所有纹理都会在构建中进行压缩。

网格和动画

可以压缩网格和导入的动画剪辑,使它们在游戏文件中占用较少的空间。要启用网格压缩,请选择网格,然后在 Inspector 窗口中将 Mesh Compression 设置为 LowMediumHigh。网格和动画压缩使用量化技术,这意味着占用更少的空间,但压缩可能会带来一定程度的不准确性。请针对具体模型尝试找到可接受的压缩程度。

请注意,网格压缩只是生成较小的数据文件,在运行时不会减少使用的内存。减少动画关键帧会生成较小的数据文件,并会在运行时减少使用的内存;通常应始终启用该功能。请参阅有关动画剪辑的文档以了解与此相关的更多信息。

Reducing .NET library size

Unity supports two .NET API compatibility levels.: .NET 4.x and .NET Standard 2.0. The .NET Standard 2.0 restricts you to a smaller subset of the .NET API, which can help keep size down.

Unity Asset Bundle Browser 工具
Social API