Unity性能优化(一) 总览篇
优化目的
- 达成目标帧率
- 运行帧率稳定
- 确保目标画质
优化参与角色
优化需要整个团队一起来做,不是某个“神人”可以搞定一切的。
三个关键职能:
- 美术:建模、贴图、绑定、动作、关卡搭建
- 技术美术(如果有):材质、Shader编程、特效制作
- 程序:游戏逻辑编程
优化流程
性能分析工具
- Unity Profiler(主要)
- Frame Debugger
- Physics Debugger
- UIElements Debugger
- IMGUI Debugger
- Memory Profiler (Package Manager提供)
- Profile Analyzer (Package Manager提供)
优化时所用环境
- 编辑器中运行
- 真机中运行
- 在构建时建议勾选 Development Build 和 Autoconnect Profiler
帧率
目标帧率
- 大多数游戏:60 FPS
- 移动游戏(普通):30 FPS
- 移动游戏(高端):60 FPS
- VR:不同设备要求不同,但基本要求在 70 FPS以上。
每帧事务
渲染一帧所需要时间 > CPU计算所需时长 + GPU消耗所需时长
每帧中所有事务完成得足够快时,游戏流畅运行;每帧中所有事务完成得不够快时,游运行卡顿。
CPU事务
- Skinning
- Batching(Static Batching、Dynamic Batching 等)
- 物理相关计算
- 粒子效果
- 用户脚本(处理玩家输入等)
- ......
GPU事务
- Shader
- DrawCall
- Image Effects(后处理)
CPU与GPU并不各自孤立:
如果 CPU 在物理计算和脚本运行要花很多时间,那么即使 Shader 优化得再好,也不会提高帧率;
如果 GPU 处理 Shader 消耗大量时间,那么即使优化物理系统和脚本也不会对提高帧率有什么帮助。
当 CPU 压力大,而 GPU 压力小时,就不应该采取一些加大 CPU 压力以减少 GPU 压力的方法。反之亦然。
因此我们要分析找到影响运行性能的短板。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!