保持构建应用程序的文件大小最小非常重要,尤其是在移动设备或对应用程序大小有限制的应用商店中。减小文件大小的第一步是确定哪些资源对文件大小贡献最大,因为这些资源是最有可能进行优化的对象。此信息在您执行构建后即可在编辑器日志中获得。转到控制台窗口(菜单:窗口 > 常规 > 控制台游戏控制台的缩写
请参阅术语表),单击右上角的小型下拉面板,然后选择打开编辑器日志。
编辑器日志提供了按类型细分的资源摘要,然后按大小贡献顺序列出所有单个资源。通常,纹理、声音和动画等占用最多的存储空间,而脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
请参阅术语表、关卡和着色器在 GPU 上运行的程序。 更多信息
请参阅术语表通常对文件大小的影响最小。“文件头”在列表中提到,但它们不是资源 - 它们实际上是添加到“原始”资源文件中以存储引用和设置的额外数据。头文件通常对资源大小的影响非常小,但如果您在 Resources 文件夹中有很多大型资源,则该值可能会很大。
编辑器日志可以帮助您识别可能需要删除或优化的资源,但在开始之前,您应该考虑以下几点
Unity 会将导入的资源重新编码为其自己的内部格式,因此源资源类型的选择无关紧要。例如,如果您在项目中有多层 Photoshop 纹理,则在构建之前会将其展平并压缩。将纹理导出为 .png 文件不会对构建大小产生任何影响,因此您应该坚持在开发过程中最方便的格式。
Unity 在构建过程中会剥离大多数未使用的资源,因此手动从项目中删除资源不会带来任何好处。唯一不会被删除的资源是脚本(通常非常小)和 Resources 文件夹中的资源(因为 Unity 无法确定哪些是需要的,哪些不是)。考虑到这一点,您应该确保 Resources 文件夹中只有游戏所需的资源。您可以使用AssetBundles替换 Resources 文件夹中的资源 - 这意味着 Unity 会动态加载资源,从而减小播放器大小。
纹理通常占用构建中最大的空间。解决此问题的第一个方法是使用压缩的纹理格式用于在 3D 图形硬件(例如显卡或移动设备)进行实时渲染期间处理纹理的文件格式。 更多信息
请参阅术语表。有关更多信息,请参阅有关特定于平台的纹理压缩的文档。
如果这不能足够地减小文件大小,请尝试减小纹理图像的物理尺寸(以像素为单位)。要做到这一点,而不修改实际的源内容,请在项目视图中选择纹理,然后在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
请参阅术语表窗口中减小最大尺寸。要查看游戏中的效果,请放大使用纹理的游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功能由附加到它的组件定义。 更多信息
请参阅术语表,然后调整最大尺寸,直到它在场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,基本上是分段设计和构建游戏。 更多信息
请参阅术语表视图中开始看起来变差。更改最大纹理尺寸不会影响您的纹理资源,只会影响其在游戏中的分辨率。
默认情况下,Unity 在导入时会压缩所有纹理。为了加快编辑器中的工作流程,请转到Unity < 首选项并取消选中导入时压缩资源的复选框。无论此设置如何,所有纹理都会在构建中被压缩。
您可以压缩网格和导入的动画剪辑,以便它们在游戏文件中占用更少的空间。要启用网格Unity 的主要图形基元。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。 更多信息
请参阅术语表压缩一种存储数据的方法,可减少其所需的存储空间。请参阅纹理压缩、动画压缩、音频压缩、构建压缩。
请参阅术语表,请选择网格,然后在检查器窗口中将网格压缩设置为低、中或高。网格和动画压缩压缩动画数据以显着减小文件大小的方法,而不会导致运动质量明显下降。动画压缩是在节省内存和图像质量之间进行权衡。 更多信息
请参阅术语表使用量化,这意味着它占用更少的空间,但压缩可能会引入一些不准确性。尝试确定模型可以接受的压缩级别。
请注意,网格压缩只会生成更小的数据文件,而不会在运行时使用更少的内存。动画关键帧标记动画中过渡的起点或终点的帧。关键帧之间的帧称为中间帧。
请参阅术语表减少会生成更小的数据文件并在运行时使用更少的内存;通常,您应该始终启用它。有关此内容的更多信息,请参阅有关动画剪辑可用于动画角色或简单动画的动画数据。它是一个简单的“单元”运动片段,例如(一个特定实例的)“闲置”、“行走”或“奔跑”。 更多信息
请参阅术语表的文档。
Unity 支持两种 .NET API 兼容性级别:.NET 4.x 和 .NET Standard 2.0。.NET Standard 2.0 将您限制在 .NET API 的较小子集中,这有助于保持较小的文件大小。