Unity的性能优化有很多需要注意的地方,包括代码优化,资源优化,GPU优化等等,在下面只是学习了最简单的几种。
层级细节LOD技术
这个说白了就是利用人眼看物体的距离,把一个物体做几个精细程度,近的时候就给他看精细程度高的,远的时候就给他看精细程度低的。
创建一个空物体,挂上LOD Group组件,把这3个资源分别拖到该组件下
注意:LOD 0-3分别表示精度(高中低),Culled表示不显示
遮挡剔除OcclusionCulling
当一个物体被其它物体遮挡住而相对当前摄像机不可见时,可以不对其进行渲染。
注意:遮挡剔除不同于视锥体剔除,视锥体剔除只是不渲染摄像机视锥范围之外的物体,而被其它物体遮挡但依然在视锥范围之内的物体不会被剔除。
选中要进行遮挡剔除的物体(所有Cube),勾选Occluder Static
打开Windows > Occlusion Culling 点击Bake进行烘焙
运行结果:
光照贴图Lightmapping
游戏中的实时光照运算非常耗时,运用光照贴图技术,可以先计算场景内的光影效果产生的氛围,之后关闭光源,以保证游戏运行时光源达到最少。
将光源的模式设为Baked
选择其它物体,勾选Lightmap Static
选择Windows > Lighting > Settings ,进行烘焙
结果:我们关闭光源后,还是可以看到光的效果
Mesh合并
额,表示还没怎么懂
资源池-Object Pool技术
代码实现,比如捕鱼,要随时实例化和销毁子弹,这是很消耗性能的。我们可以专门拿一个文件来管理子弹,在这个文件中一次创建很多子弹,设置它们不可见。当实例化子弹的时候,遍历这些子弹,谁不可见就拿谁用,设置为可见,然后设置位置等信息,用完该销毁的时候不销毁,再设置为不可见就行了。