学习并整理Unity的几种优化方法

第一个:把不需要移动的物体设置成静态static

第二个:关闭垂直同步信号

             点击   edit --->  project setting   --->  quality

             在最右边找到   VSyns  Count    ( VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecondVBlank  = 30;如果需要手动调整FPS,首先关闭垂直同步这个功能Don't sync,然后在代码的Awake方法里手动设置FPS(Application.targetFrameRate = 45;))

             如果关闭了,帧速率会提高很多,但相应的画面连续性会下降,

          这是个什么原理呢?实际是这样的,我们选择等待垂直同步信号(也就是我们平时所说的垂直同步打开),那么在游戏中或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样FPS自然要受到操作系统刷新率运行值的制约。

          而如果我们选择不等待垂直同步信号(也就是我们平时所说的关闭垂直同步),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。但是不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面更加平滑和稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因。

           补充:这里解释一下什么是水平同步什么又是垂直同步

                       先说现显示器的工作原理,
                    显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器都有两种同步参数——水平同步和垂直同步。

                     垂直和水平是CRT(CRT阴极射线显示管 这不是重点莫纠结)中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平。

第三个:尽可能不用灯光。

第四个:尽可能共用材质,Unity的Mesh合并(因字数问题相关内容点击链接)

第五个:PC平台的话保持场景中显示的顶点数少于200K~3M,移动设备的话少于10W,一切取决于你的目标GPU与CPU。

第六个:尝试用压缩贴图格式。

第七个:注意是否有多余的动画脚本,模型自动导入到U3D会有动画脚本,大量的话会严重影响消耗CPU计算。
第八个:注意碰撞体的碰撞层,不必要的碰撞检测请舍去。

第九个:针对CPU的优化——减少DRAW CALL 的数量

合并相近的模型,手动在模型编辑器中合并或者使用UNITY的Draw call批处理达到相同效果(Draw call batching)

在项目中使用更少的材质(material),将几个分开的贴图合成一个较大的图集等方式处理

使用相关剔除数量直接减少Draw Call数量

尽量少用一些渲染步骤,例如reflections,shadows,per-pixel light 等。

Draw call batching的合并物体,会使每个物体(合并后的物体)至少有几百个三角面

https://blog.csdn.net/One_Piece_Fu/article/details/81457327 

感谢CSDN,感谢分享学习资料与经验的前辈!!!

谢谢!

猜你喜欢

转载自blog.csdn.net/One_Piece_Fu/article/details/81411057