gzyueqian
13352868059

Unity中批处理静态和动态问题要怎么处理?

更新时间: 2020-11-04 15:09:21来源: 粤嵌教育浏览量:7546

      Unity在游戏开发行业起到的作用是非常大的,很多的游戏就是使用unity开发出来的,那么在unity在运行的时候是需要把一些物体进行合并的,从而用一个绘制来渲染他们,这个就是批处理了,今天粤嵌科技的这篇文章就是想和大家说在unity中批处理静态和动态的问题要怎么解决:

  动态批处理


  如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。


  动态批处理操作是自动完成的,并不需要你进行额外的操作。


  Tips:


  提醒:


  1、 批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理仅支持小于900顶点的网格物体。


  2、 如果你的着色器使用顶点位置,法线和UV值三种属性,那么你只能批处理300顶点以下的物体;如果你的着色器需要使用顶点位置,法线,UV0,UV1和切向量,那你只能批处理180顶点以下的物体。


  3、请注意:属性数量的限制可能会在将来进行改变。


  4、 不要使用缩放尺度(scale)。分别拥有缩放尺度(1,1,1)和(2,2,2)的两个物体将不会进行批处理。


  5、 统一缩放尺度的物体不会与非统一缩放尺度的物体进行批处理。


  使用缩放尺度(1,1,1)和 (1,2,1)的两个物体将不会进行批处理,但是使用缩放尺度(1,2,1)和(1,3,1)的两个物体将可以进行批处理。


  6、 使用不同材质的实例化物体(instance)将会导致批处理失败。


  7、拥有lightmap的物体含有额外(隐藏)的材质属性,比如:lightmap的偏移和缩放系数等。所以,拥有lightmap的物体将不会进行批处理(除非他们指向lightmap的同一部分)。


  8、 多通道的shader会妨碍批处理操作。比如,几乎unity中所有的着色器在前向渲染中都支持多个光源,并为它们有效地开辟多个通道。


  9、预设体的实例会自动地使用相同的网格模型和材质。


  静态批处理


  相对而言,静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量低使用它,因为它需要更少的CPU开销。


  为了更好地使用静态批处理,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将Static复选框打勾即可,如下图所示:


  使用静态批处理操作需要额外的内存开销来储存合并后的几何数据。在静态批处理之前,如果一些物体共用了同样的几何数据,那么引擎会在编辑以及运行状态对每个物体创建一个几何数据的备份。这并不总是一个好的想法,因为有时候,你将不得不牺牲一点渲染性能来防止一些物体的静态批处理,从而保持较少的内存开销。比如,将浓密森里中树设为Static,会导致严重的内存开销。


  静态批处理目前只支持Unity iOS Advanced。


  不同的问题肯定是有不同的处理方式的,如果说你对于unity上有更多的专业上的知识需要去学习的话,那么可以来我们粤嵌科技的unity培训班进行实地考察,也可以点击我们文章下面的获取试听资格按钮来获取我们的unity课程免费试听资格,在试听中可以更加深入的了解粤嵌科技。

免费预约试听课