unity性能优化方案
1.Unity 性能调试工具及使用方法
2.垃圾回收(Garbage Collection)
3.CPU相关优化
4.GPU相关优化
5.使用UPR(Unity Performance Reporting)云服务进行性能测试
每一帧需要做到的事情

- 渲染一帧所需的时长 > CPU计算所需时长 + GPU计算所需时长
- (比如,如果CPU上的物理计算和脚本运行要花很多时间,那么即使Shader优化的再好,也不会提高帧率;反过来说,如果GPU上压力山大,那么优化物理系统和脚本也对提高帧率没有什么大的帮助。因此,我们要分析找到整个系统中的薄弱环节,也就是漏水的水桶上最低的那一块板。)
CPU 和 GPU 各自负责的工作
- CPU 相关:Skinning,Batching(Static Batching,Dynamic
- Batching等),物理相关,用户脚本,粒子效果等 GPU 相关:Shader,Drawcalls,Image
- Effects(后处理) 但是CPU和GPU不是各自孤立的:
- Draw Call太高 -> 使用CPU做Batching降低Draw Call -> 性能提升
- Draw Call不高 -> 使用CPU做Batching降低Draw Call -> 浪费CPU处理能力,导致culling效率下降 -> 性能下降
优化时使用的环境

对Project Settings进行优化设置
- 通过编辑器顶部菜单Edit/Project Settings打开项目设置界面。找到Player下面的 Other Settings界面。
- 确保Static Batching,Dynamic Batching,GPU Skinning,Graphics Jobs 都已经启用。
- (如果是Oculus Quest)禁用ARMv7,打开ARM64。在Scripting Backend下拉框中选择IL2CPP,这样所有的C#代码会被转成C++代码,提高运行速度。
- (如果是Rift和Rift S)在Scripting Backend下拉框中选择IL2CPP(但是Debug会变得不方便),所以在开发阶段可以使用Mono,正式出包时改成IL2CPP。
- 打开XR Plugin Management设置界面,安装Oculus XR Plugin,确保Initialize on Startup为勾选状态。
- 打开Oculus设置界面,确保Shared Depth Buffer和Dash Support都为勾选状态,然后把Stereo Rendering Mode设置为Single Pass Instanced。
- 在Quality设置界面,确保Android平台下只勾选Medium