• 游戏
  • 工业
  • 资源
  • 社区
  • 学习
  • 支持
开发
Unity 引擎
为任何平台构建2D和3D游戏
下载计划和定价
商业化
应用内购买(IAP)
发现并管理各商店的IAP
聚合平台
最大化收入并优化变现
Ad Quality
保护您应用的用户体验
Tapjoy
建立长期用户忠诚度
所有变现产品
用户获取
用户获取
被发现并获取移动用户
Unity向量AI
将玩家与合适的游戏连接
Aura设备内广告
在用户高峰参与时触达用户
所有增长产品
使用案例
3D协作
实时构建和审查3D项目
沉浸式培训
在沉浸式环境中培训
客户体验
创建互动3D体验
所有行业解决方案
行业
制造业
实现运营卓越
零售
将店内体验转化为在线体验
汽车
提升创新和车内体验
所有行业
技术库
文档
官方用户手册和API参考
开发者工具
发布版本和问题跟踪器
路线图
查看即将推出的功能
术语表
技术术语库
洞察
案例分析
真实成功案例
最佳实践指南
专家提示和技巧
所有资源
新增功能
博客
更新、信息和技术提示
新闻
新闻、故事和新闻中心
社区中心
讨论
讨论、解决问题和连接
事件
全球和本地活动
社区故事
Made with Unity
展示Unity创作者
直播活动
加入开发者、创作者和内部人员
Unity奖项
庆祝全球的Unity创作者
适合每个级别
Unity Learn
免费掌握Unity技能
专业培训
通过Unity培训师提升您的团队
Unity新手
准备开始
开始您的学习
Unity基础路径
你是Unity 新手?开始您的旅程
使用指南
可操作的技巧和最佳实践
教育
对于学生
开启您的职业生涯
对于教育者
增强您的教学
教育资助许可证
将Unity的力量带入您的机构
认证
证明您的Unity精通
支持选项
获取帮助
帮助您在Unity中取得成功
成功计划
通过专家支持更快实现目标
常见问题解答
常见问题解答
联系我们
与我们的团队联系
计划和定价
语言
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
社交
货币
采购
  • 产品
  • Unity Ads
  • 订阅
  • Unity Asset Store
  • 经销商
教育
  • 学生
  • 教师
  • 机构
  • 认证
  • 学习
  • 技能发展计划
下载
  • Unity Hub
  • 下载存档
  • Beta 版测试
Unity Labs
  • 实验室
  • 作品
资源
  • 学习平台
  • 社区
  • 文档
  • Unity QA
  • 常见问题解答
  • 服务状态
  • 案例分析
  • Made with Unity
Unity
  • 我们公司
  • 新闻简报
  • 博客
  • 事件
  • 工作机会
  • 帮助
  • 新闻
  • 合作伙伴
  • 投资人
  • 附属机构
  • 安防
  • 社会影响力
  • 包容性与多样性
  • 联系我们
版权所有 © 2025 Unity Technologies
  • 法律
  • 隐私政策
  • Cookie
  • 不要出售或分享我的个人信息

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其分支机构在美国及其他地区的商标或注册商标(单击此处获取更多信息)。其他名称或品牌是其各自所有者的商标。

Hero background image

为更强的性能配置您的 Unity 项目

为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。
请点击这里。

这是系列文章中的第一篇,解读了针对您的 Unity 项目的优化技巧。将它们作为在更少资源下以更高帧率运行的指南。一旦您尝试了这些最佳实践,请务必查看系列中的其他页面:

  • 高端图形的性能优化
  • 管理 PC 和游戏主机的 GPU 使用
  • 高级编程和代码架构
  • 增强物理性能以实现流畅的游戏体验

查看我们为 Unity 6 开发者和艺术家提供的最新优化指南:

  • 在 Unity 中为移动端、XR 和 Web 优化游戏性能
  • 在 Unity 中为游戏主机和 PC 优化游戏性能
  • 为更强的性能配置您的项目
  • 禁用不必要的 Player/Quality 设置
  • 切换到 IL2CPP
  • 选择正确的帧率
  • 减少或禁用加速度计频率
  • 避免大型层级结构
  • 压缩您的纹理
  • 利用纹理导入设置
  • 图集您的纹理
  • 检查多边形计数
  • 管理网格导入设置
  • 查看更多网格优化
  • 审核您的素材资源
  • 调整异步纹理缓冲区
  • 流式传输 Mip Maps 和纹理
  • 使用地址able

为更强的性能配置您的项目

优化良好的素材资源管道可以加快加载时间,减少内存使用,并提高运行时性能。通过与经验丰富的技术艺术家合作,您的团队可以定义和执行素材资源格式、规格和导入设置,以确保高效和流畅的工作流程。

不要仅依赖默认设置。利用特定平台的覆盖选项卡来优化纹理、网格几何和音频文件等素材资源。不正确的设置可能导致更大的构建大小、更长的构建时间和较差的内存使用。

考虑使用 预设 来建立针对您特定项目需求的基线设置。这种主动的方法有助于确保素材资源从一开始就经过优化,从而在所有平台上实现更好的性能和更一致的体验。

有关更多指导,请参考 艺术素材资源的最佳实践 或在 Unity Learn 上探索 移动应用程序的 3D 艺术优化 课程。这些资源提供了有价值的见解,可以帮助您就 Unity 网页构建、移动和 XR 应用程序的素材资源优化做出明智的决策。

在 Unity 中打包 2D 精灵时的三种类型的图集
在 UNITY 中打包 2D 精灵时的三种类型的图集

禁用不必要的 Player 或质量设置

在 Player 设置中,禁用 自动图形 API 以防止为不支持的平台生成过多的着色器变体。如果您的应用程序不支持较旧的 CPU,请禁用 目标架构。

在 质量 设置中,禁用不必要的质量级别。

了解更多关于 图形 API 的信息。

质量设置
在质量设置中,禁用不必要的质量级别。

切换到 IL2CPP

将脚本后端从 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每秒多次获取您手机的加速度计。如果您的应用程序中未使用此功能,请禁用它,或降低其频率以获得更好的整体性能。

了解更多关于加速度计的信息。

如何设置加速度计频率
如果您在手机游戏中未使用加速度计频率,请禁用它。

避免大型层级结构

拆分您的层级。如果您的游戏对象不需要嵌套在层级中,请简化父子关系。

较小的层级可以利用多线程来刷新场景中的变换。复杂的层级会导致不必要的变换计算和更多的垃圾回收成本。

请参阅优化层级和这个Unite演讲以获取关于变换的提示。

压缩您的纹理

考虑以上两个使用相同模型和纹理的示例。左侧的设置消耗的内存几乎是右侧的26倍,而视觉质量没有太大改善。

对移动设备、XR和网络使用自适应可缩放纹理压缩(ATSC)。绝大多数正在开发的游戏倾向于针对支持ATSC压缩的最低规格设备。

唯一的例外是:

  • 针对A7设备或更低的iOS游戏(例如,iPhone 5、5S等) – 使用PVRTC
  • 针对2016年之前设备的Android游戏 – 使用ETC2(爱立信纹理压缩)

如果像PVRTC和ETC这样的压缩格式质量不够高,并且如果ASTC在您的目标平台上不完全支持,请尝试使用16位纹理而不是32位纹理。

有关按平台推荐的纹理压缩格式的更多信息,请参阅手册。

未压缩纹理与DXT1压缩纹理
未压缩纹理比压缩纹理需要更多内存。

利用纹理导入设置

纹理可能会使用过多资源,因此优化您的导入设置至关重要。一般来说,请尝试遵循以下指南:

  • 降低最大尺寸:使用产生视觉上可接受结果的最小设置。这不会破坏原始数据,并且可以快速减少您的纹理内存。
  • 使用2的幂(POT):Unity要求纹理压缩格式的纹理尺寸为2的幂。
  • 关闭读取/写入启用选项:启用时,此选项会在CPU和GPU可寻址内存中创建一个副本,导致纹理的内存占用翻倍。在大多数情况下禁用它,只有在您在运行时生成需要覆盖的纹理时才启用它。您还可以通过Texture2D.Apply强制此选项,传入makeNoLongerReadable设置为True。
  • 禁用不必要的Mip Maps:对于在屏幕上保持一致大小的纹理,例如2D精灵和UI图形,不需要Mip Maps。但是,对于与相机距离变化的3D模型,请保留Mip Maps启用。

了解更多关于纹理导入设置的信息。

图集您的纹理

图集是将多个较小的纹理组合成一个较大纹理的过程。纹理图集 减少内存使用并需要更少的绘制调用,从而减少 GPU 所需的工作量。

  • 对于 2D 项目:使用 精灵图集 (资源 > 创建 > 2D > 精灵图集) 而不是渲染单个精灵或纹理。
  • 对于 3D 项目:您可以使用您选择的 数字内容创作 (DCC) 软件包。一些第三方工具,如 MA_TextureAtlasser 或 TexturePacker 也可以用于构建纹理图集。

组合纹理并重新映射 UVs 以适应任何不需要高分辨率贴图的 3D 几何体。可视化编辑器使您能够设置和优先考虑纹理图集或 精灵表 中的大小和位置。

纹理打包器 将单个贴图合并为一个大纹理。然后 Unity 可以发出一次绘制调用,以较小的性能开销访问打包的纹理。

在 这里 阅读有关精灵图集的更多信息。

纹理图集界面
使用纹理图集来减少绘制调用的数量。

检查多边形计数

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

移除模型上的面
移除任何不可见的面以优化您的模型。

管理网格导入设置

就像纹理一样,网格也会消耗大量内存,因此请为它们选择最佳导入设置。通过以下方法减少网格的内存占用:

  • 压缩网格:激进的压缩可以减少磁盘空间(但在运行时内存不受影响)。请注意,网格量化可能会导致不准确,因此请尝试不同的压缩级别,以查看哪些适合您的模型。
  • 禁用读/写:启用此选项会在内存中复制网格,这会在系统内存中保留一个网格副本,而在GPU内存中保留另一个。在大多数情况下,您应该禁用它(在Unity 2019.2及更早版本中,此选项默认选中)。
  • 禁用骨架和混合形状:如果您的网格不需要骨骼或混合形状动画,请尽可能禁用这些选项。

禁用法线和切线:如果您绝对确定网格材质不需要法线或切线,请取消选中这些选项以节省更多内存。

检查您的网格导入设置。
检查您的网格导入设置

查看更多网格优化

在播放器设置中提供额外的网格优化选项:

  • 顶点压缩设置每个通道的顶点压缩。例如,您可以为除位置和光照贴图UV之外的所有内容启用压缩。这可以减少网格的运行时内存使用。
  • 注意:每个网格的导入设置中的网格压缩设置会覆盖顶点压缩设置。在这种情况下,网格的运行时副本是未压缩的,可能会使用更多内存。
  • 优化网格数据会移除网格中不需要的任何数据,这些数据是材质所需的(例如切线、法线、颜色和UV)。

审核您的素材资源

通过自动化审核过程,您可以避免意外更改资产设置。资产后处理器可以帮助您标准化导入设置或分析现有资产。它允许您在导入资产时运行脚本,并基本上提示您在导入模型、纹理、音频等之前和/或之后自定义设置。

在理解优化指南中阅读更多关于资产审核的信息。

调整异步纹理缓冲区

Unity使用环形缓冲区将纹理推送到GPU。您可以通过QualitySettings.asyncUploadBufferSize手动调整此异步纹理缓冲区。

如果上传速率过慢或主线程在同时加载多个纹理时停滞,请调整这些纹理缓冲区。您通常可以将值(以MB为单位)设置为场景中需要加载的最大纹理的大小。

请记住,更改默认值可能会导致高内存压力。此外,Unity分配后,您无法将环形缓冲区内存返回系统。如果GPU内存过载,GPU会卸载最近和最少使用的纹理,并强制CPU在下次进入相机视锥体时重新上传它。

在内存管理教程中探索所有纹理缓冲区的内存限制,并参考优化加载性能以查看如何改善加载时间。

流式传输 Mip Maps 和纹理

Mip Map流式传输系统让您控制哪些Mip Map级别应加载到内存中。通过转到Unity的质量设置(编辑 > 项目设置 > 质量)并检查纹理流式传输选项来启用它。您可以在纹理导入设置的高级下启用流式Mip Maps。

该系统减少了纹理所需的总内存量,因为它仅加载当前相机位置渲染所需的Mip Maps。否则,Unity默认加载所有纹理。

纹理流式传输以少量CPU资源换取潜在的大量GPU内存。它还会自动减少Mip Map级别,以保持在用户定义的内存预算内。

您可以使用Mip Map Streaming API进行进一步控制。

纹理流式传输选项
纹理流式传输设置

使用地址able

Addressable Asset System提供了一种简化的方式来管理您的内容。该统一系统通过“地址”或别名异步加载AssetBundles,来源于本地路径或远程内容交付网络(CDN)。

如果您将非代码资产(模型、纹理、预制件、音频,甚至整个场景)拆分为AssetBundle,您可以将它们作为可下载内容(DLC)分开。

然后,使用Addressables为您的移动应用程序创建一个更小的初始构建。Cloud Content Delivery允许您在玩家进行游戏时托管和交付游戏内容。

请参阅Unity Learn上的教程Get started with Addressables,快速了解Addressable Asset System如何在您的项目中工作。

点击这里查看Addressable Asset System如何简化资产管理。

使用Addressable Asset System通过“地址”加载资产。
使用地址可加载资产的地址可加载资产系统
来自Unity的更多最佳实践
Unity 6的更多提示

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

更多最佳实践