Unity3D项目优化文档
2017-06-22 17:59
253 查看
Unity3D项目优化文档
@ (优化点)[CUP方面 |GPU方面 |内存方面]Unity3D项目优化文档
一CPU方面的优化
DrawCalls
物理组件
其他程序功能
二GPU方面的优化
优化方案
三内存方面的优化
一.CPU方面的优化:
优化以下因素来提升CUP的速率:@(优化点)[DrawCalls |物理组件 ]
DrawCalls :
什么是DrawCalls?DrawCalls就是对底层图形程序接口的调用。而去调用这个接口的就是CUP。比如有上千个物体,每一个物体都需要去调用一次底层接口,而每一次调用,CPU都要进行很多的计算工作,那么CPU必然会很消耗。但对于GPU来说,图形渲染处理的工作的都是一样的。
优化方案:
尽量解放CPU在调用图形接口上的开销,可以使用以下方法优化:
使用Draw Call Batching(即是:“批处理绘制”,被批处理的2个或者以上物体的网格模型需要使用相同的材质),也就是描绘调用批处理。这样U3D在运行的时候可以将一些物体进行合并处理,从而只调用一次图形绘制接口。(其中Draw Call Batching 主要细分为:Static Batching(静态批处理)和Dynamic Batching两种)
通过把纹理打包成图集来减少材质的使用。
尽量减少使用反光,阴影。因为他会使物体进行多刺的渲染。
尽量多的使用预制件(Prefab)。可以极大的优化DrawCals的调用次数。
物理组件 :
优化方案物理组件,是游戏中模拟计算物理效果的组件。那么物理计算的频率越高,CUP的计算量也就相应的增大。所以把Fixed Timestep调节到合适值会优化物理的运算。
再这就是尽量不要使用网格碰撞器。因为网格碰撞器利用网格资源并在其上构建碰撞检测。所有他的计算量将会很大。
其他(程序功能) :
尽量少使用Foreach,而使用for。不要直接访问gameobject的tag属性。最好换做CompareTag。因为访问Tag属性会在堆上额外的分配空间。
尽量使用“池”,以实现空间的重复利用。
尽量不要使用LINQ命令。
二.GPU方面的优化:
优化以下因素来提升GUP的速率:@(优化点)[顶点数量|压缩图片 ]
优化方案:
减少模型的顶点数量(即相应的模型面数,复杂程度)。据了此次测试统计结果,尽量保持是250万面左右最佳。保持材质的数目尽可能的少。使得Uinty更容易的进行批处理。
使用
4000
纹理图集(一张大图里面包含了很多的字贴图)来代替一系列单独的小贴图。
使用光照纹理而不是非实时灯光。
使用LOD,好处就是离的远,看不清的物体的细节可以忽略。
遮挡剔除(多使用Occlusion culling)
尽量使用mobile 版的shader。因为简单。
使用mipmap。(和LOD类似)
对于模型需求不是很精细的物体,尽量使用曲线细分的功能。
三.内存方面的优化:
优化以下因素来提升GUP的速率:@(优化点)[Unity3D内部的内存|各种资源|逻辑 ]
通常情况下,Unity游戏引擎的内存中大概需要存储的有:
资源:纹理,网格,音频,动画。
GameObject和各种组件。
引擎内部逻辑需要的内存:渲染器,物理系统,粒子系统等等。
针对以上几点的优化方案有:
处理纹理 :
除非真正需要,否则不要创建面向纹理 的 Mipmap
使用压缩纹理
除非需要,否则不要将纹理设置为可读 状态(CPU 读/写)。 这样可避免额外的 CPU 副本,标记等。
根据屏幕分辨率缩小纹理
动画:删除动画中的冗余关键帧。
网格模型 :
删除网格中的不常用通道(在“Player”设置下方,启用 “Optimized Mesh Data”)。
减少不必要的多余节点,面数,以及碰撞体。
一个整体模型的面数尽量控制在250万。
相关文章推荐
- unity项目优化--绘制调用批处理unity3d Draw Call Batching
- Unity3d项目优化经验
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D_项目优化策略
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D 编译iOS 项目的优化选项
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D项目优化:从Draw Calls到GC
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D笔记第十九天——项目优化策略
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D项目优化--绘制调用批处理unity3D Draw
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D项目优化:从Draw Calls到GC
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- Unity3D项目工程性能优化
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC
- 深入浅出聊Unity3D项目优化:从Draw Calls到GC