Unity 性能优化之静态批处理(三)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!

文章目录


前言

动态批处理是常用优化技术之一。

不论是动态合批还是静态合批,因为都是牺牲内存来降低Draw Cal,也就是提高CPU。所有要根据项目情况分析来使用这些技术。

一、静态批处理是什么?

静态合批也叫静态批处理,是Unity的一种优化技术。

对于始终静止不动的物体使用静态合批后, CPU会把它们合并为一个批次发送给GPU处理,这样可以减少DrawCall带来的性能消耗,从而提升游戏性能。

二、使用步骤

1.勾选Static Batching

要使用静态合批,必须确保Edit-Project Settings-Player-Other Settings-Static Batching是勾选的。

2.测试静态合批效果

1.首先创建一个场景,在场景中创建3个cube,显示合批次数5,如下图

2.使用静态合批

选中该物体,点击在Inspector窗口右上角的Static右方的下拉菜单,选择Batching Static,点击运行

很明显降低了合批次数,如下图

三、静态合批得限制

使用静态合批虽然可以提升游戏性能,但是设置为静态的物体在整个游戏中就不能再运动了,强行使它们运动会出问题。而且即使按照以上步骤进行了静态合批,也不一定保证会成功,必须满足以下全部条件,静态合批才会成功:

1、游戏对象处于激活状态。

2、游戏对象有一个Mesh Filter组件,并且该组件已启用。

3、Mesh Filter组件具有对网格的引用。

4、网格已启用Read/Write功能。

5、网格的顶点计数大于0。

6、该网格尚未与另一个网格组合。

7、游戏对象有一个Mesh Renderer组件,并且该组件已启用。

8、网格渲染器组件不将任何材质与DisableBatching标记设置为true的着色器一起使用。

9、要批处理在一起的网格使用相同的顶点属性。例如, Unity可以将使用顶点位置、顶点法线和一个UV的网格与另一个UV进行批处理,但不能将使用顶点定位、顶点法线、UVO、UV1和顶点切线的网格进行批处理。

四、如何看是否成功

1.可以只管得看到合批次数降低

2.可以在Profiler窗口看到合批信息,是否发生变化,如下图

五、静态合批弊端

所有得优化技术都是有利有弊得,比如:静态合批就是牺牲了某些特性来得到降低Draw Call。

1.静态合批得物体不能移动、旋转等

2.增大内存开销:合批后的网格会常驻内存,在有些场景下可能并不适用。比如森林中的每一棵树的网格都相同,如果对它采用静态合批策略,合批后的网格基本等同于:单颗树网格 x 树的数量,这对内存的消耗可能就十分巨大了。因此场景加载后,由于场景内有静态合批数据,会使内存变大。

六、使用代码来静态合批

前提条件:必须满足合批条件,才会生效,和手动在编辑器里选择一样。

csharp 复制代码
StaticBatchingUtility.Combine(GameObject 根物体)
StaticBatchingUtility.Combine(GameObject[] 要进行静态合批的游戏对象,GameObject 根物体)

总结

好记性不如烂笔头

上一章:链接: Unity 性能优化之Profiler窗口(二)怎么看懂这个分析器

下一章:链接: Unity 性能优化之动态批处理(四

相关推荐
2301_768103491 小时前
HarmonyOS趣味相机实战第5篇:CameraKit资源释放、PixelMap生命周期与预览黑屏排查
性能优化·harmonyos·arkts·camerakit·pixelmap
段一凡-华北理工大学2 小时前
AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章23:从Demo到上线:Agent应用的架构设计、性能优化与成本控制实战
运维·网络·人工智能·性能优化·高炉炼铁·工业智能体
大师兄66682 小时前
HarmonyOS7 长列表性能优化:渲染与内存双提升
性能优化·长列表·harmonyos7
X1A0RAN3 小时前
Python 并发请求性能优化实战
python·性能优化·并发编程
爱喝水的鱼丶3 小时前
SAP-ABAP:ALV字段布局定制全攻略——快速适配业务端个性化展示需求
运维·性能优化·sap·abap·经验交流·alv报表
壮哥_icon14 小时前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化
千里马学框架14 小时前
Android Framework 新手学习踩坑建议指南
android·智能手机·性能优化·framework·aaos·车载开发·系统工程师
天若有情67319 小时前
前端性能优化:从“按下预加载”到“AI级智能预判系统”
前端·性能优化·js·active·hover·首屏加载
yyt36304584120 小时前
KlineChartQuant Tooltip 高频交互 200FPS 性能优化完整复盘
前端·经验分享·性能优化·typescript·vue·交互·chrome devtools
jump_jump1 天前
深入理解 GraphQL:一条查询到底是怎么执行的
性能优化·api·graphql