
这是系列文章中的第一篇,解读了针对您的 Unity 项目的优化技巧。将它们作为在更少资源下以更高帧率运行的指南。一旦您尝试了这些最佳实践,请务必查看系列中的其他页面:
查看我们为 Unity 6 开发者和艺术家提供的最新优化指南:
优化良好的素材资源管道可以加快加载时间,减少内存使用,并提高运行时性能。通过与经验丰富的技术艺术家合作,您的团队可以定义和执行素材资源格式、规格和导入设置,以确保高效和流畅的工作流程。
不要仅依赖默认设置。利用特定平台的覆盖选项卡来优化纹理、网格几何和音频文件等素材资源。不正确的设置可能导致更大的构建大小、更长的构建时间和较差的内存使用。
考虑使用 预设 来建立针对您特定项目需求的基线设置。这种主动的方法有助于确保素材资源从一开始就经过优化,从而在所有平台上实现更好的性能和更一致的体验。
有关更多指导,请参考 艺术素材资源的最佳实践 或在 Unity Learn 上探索 移动应用程序的 3D 艺术优化 课程。这些资源提供了有价值的见解,可以帮助您就 Unity 网页构建、移动和 XR 应用程序的素材资源优化做出明智的决策。

在 Player 设置中,禁用 自动图形 API 以防止为不支持的平台生成过多的着色器变体。如果您的应用程序不支持较旧的 CPU,请禁用 目标架构。
在 质量 设置中,禁用不必要的质量级别。
了解更多关于 图形 API 的信息。

将脚本后端从 Mono 切换到 IL2CPP(中间语言到 C++)可以提供更好的运行时性能。然而,这也可能会增加构建时间。一些开发者更喜欢在本地使用 Mono 以加快迭代速度,然后在构建机器和/或发布候选版本时切换到 IL2CPP。请参考 优化 IL2CPP 构建时间文档 以获取有关减少构建时间的更多信息。
注意:通过使用此选项,Unity 在为您的目标平台创建本机二进制文件(.exe、.apk、.xap)之前,将脚本和程序集中的 IL 代码转换为 C++。
请参阅 IL2CPP 内部介绍 或查阅 编译器选项手册页面 以了解各种编译器选项如何影响运行时性能。
移动项目必须在帧率与电池寿命和热限制之间取得平衡。与其在 60 fps 下逼迫设备的极限,不如考虑以 30 fps 作为折中。Unity 默认在移动设备上使用 30 fps。
在针对 XR 平台时,帧率的考虑更加关键。72 fps、90 fps,甚至 120 fps 的帧率通常是保持沉浸感和防止运动病所必需的。这些更高的帧率有助于确保流畅和响应迅速的体验,这对 VR 环境中的舒适性至关重要。然而,这些在功耗和热管理方面也带来了自己的挑战,特别是在独立的 VR 头戴设备中。
选择合适的帧率是了解目标平台的具体需求和限制,无论是移动设备、独立的 VR 头戴设备还是 AR 设备。通过仔细选择合适的帧率,您可以在不同平台上优化性能和用户体验。
您还可以在运行时动态调整帧率,使用Application.targetFrameRate。例如,您可以在缓慢或相对静态的场景中将帧率降到30 fps以下,并为游戏保留更高的帧率设置。
更多信息请参见文档。
Unity每秒多次获取您手机的加速度计。如果您的应用程序中未使用此功能,请禁用它,或降低其频率以获得更好的整体性能。
了解更多关于加速度计的信息。

考虑以上两个使用相同模型和纹理的示例。左侧的设置消耗的内存几乎是右侧的26倍,而视觉质量没有太大改善。
对移动设备、XR和网络使用自适应可缩放纹理压缩(ATSC)。绝大多数正在开发的游戏倾向于针对支持ATSC压缩的最低规格设备。
唯一的例外是:
如果像PVRTC和ETC这样的压缩格式质量不够高,并且如果ASTC在您的目标平台上不完全支持,请尝试使用16位纹理而不是32位纹理。
有关按平台推荐的纹理压缩格式的更多信息,请参阅手册。

纹理可能会使用过多资源,因此优化您的导入设置至关重要。一般来说,请尝试遵循以下指南:
了解更多关于纹理导入设置的信息。
图集是将多个较小的纹理组合成一个较大纹理的过程。纹理图集 减少内存使用并需要更少的绘制调用,从而减少 GPU 所需的工作量。
组合纹理并重新映射 UVs 以适应任何不需要高分辨率贴图的 3D 几何体。可视化编辑器使您能够设置和优先考虑纹理图集或 精灵表 中的大小和位置。
纹理打包器 将单个贴图合并为一个大纹理。然后 Unity 可以发出一次绘制调用,以较小的性能开销访问打包的纹理。
在 这里 阅读有关精灵图集的更多信息。

更高分辨率的模型意味着更多的内存使用和潜在的更长 GPU 时间。您的背景几何体需要五十万个多边形吗?考虑在您选择的 DCC 软件包中减少模型。从相机的视角删除不可见的多边形,并使用纹理和法线贴图来代替高密度网格的细节。

就像纹理一样,网格也会消耗大量内存,因此请为它们选择最佳导入设置。通过以下方法减少网格的内存占用:
禁用法线和切线:如果您绝对确定网格材质不需要法线或切线,请取消选中这些选项以节省更多内存。

在播放器设置中提供额外的网格优化选项:
Mip Map流式传输系统让您控制哪些Mip Map级别应加载到内存中。通过转到Unity的质量设置(编辑 > 项目设置 > 质量)并检查纹理流式传输选项来启用它。您可以在纹理导入设置的高级下启用流式Mip Maps。
该系统减少了纹理所需的总内存量,因为它仅加载当前相机位置渲染所需的Mip Maps。否则,Unity默认加载所有纹理。
纹理流式传输以少量CPU资源换取潜在的大量GPU内存。它还会自动减少Mip Map级别,以保持在用户定义的内存预算内。
您可以使用Mip Map Streaming API进行进一步控制。

Addressable Asset System提供了一种简化的方式来管理您的内容。该统一系统通过“地址”或别名异步加载AssetBundles,来源于本地路径或远程内容交付网络(CDN)。
如果您将非代码资产(模型、纹理、预制件、音频,甚至整个场景)拆分为AssetBundle,您可以将它们作为可下载内容(DLC)分开。
然后,使用Addressables为您的移动应用程序创建一个更小的初始构建。Cloud Content Delivery允许您在玩家进行游戏时托管和交付游戏内容。
请参阅Unity Learn上的教程Get started with Addressables,快速了解Addressable Asset System如何在您的项目中工作。
点击这里查看Addressable Asset System如何简化资产管理。


从Unity最佳实践中心找到更多适合高级Unity开发者和创作者的最佳实践和技巧。从超过30个指南中选择,这些指南由行业专家、Unity工程师和技术艺术家创建,将帮助您高效地使用Unity的工具集和系统。