赞
踩
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激!
动态批处理是常用优化技术之一。
不论是动态合批还是静态合批,因为都是牺牲内存来降低Draw Cal,也就是提高CPU。所有要根据项目情况分析来使用这些技术。
静态合批也叫静态批处理,是Unity的一种优化技术。
对于始终静止不动的物体使用静态合批后, CPU会把它们合并为一个批次发送给GPU处理,这样可以减少DrawCall带来的性能消耗,从而提升游戏性能。
要使用静态合批,必须确保Edit-Project Settings-Player-Other Settings-Static Batching是勾选的。
1.首先创建一个场景,在场景中创建3个cube,显示合批次数5,如下图
2.使用静态合批
选中该物体,点击在Inspector窗口右上角的Static右方的下拉菜单,选择Batching Static,点击运行
很明显降低了合批次数,如下图
使用静态合批虽然可以提升游戏性能,但是设置为静态的物体在整个游戏中就不能再运动了,强行使它们运动会出问题。而且即使按照以上步骤进行了静态合批,也不一定保证会成功,必须满足以下全部条件,静态合批才会成功:
所有得优化技术都是有利有弊得,比如:静态合批就是牺牲了某些特性来得到降低Draw Call。
1.静态合批得物体不能移动、旋转等
2.增大内存开销:合批后的网格会常驻内存,在有些场景下可能并不适用。比如森林中的每一棵树的网格都相同,如果对它采用静态合批策略,合批后的网格基本等同于:单颗树网格 x 树的数量,这对内存的消耗可能就十分巨大了。因此场景加载后,由于场景内有静态合批数据,会使内存变大。
前提条件:必须满足合批条件,才会生效,和手动在编辑器里选择一样。
StaticBatchingUtility.Combine(GameObject 根物体)
StaticBatchingUtility.Combine(GameObject[] 要进行静态合批的游戏对象,GameObject 根物体)
好记性不如烂笔头
上一章:链接: Unity 性能优化之Profiler窗口(二)怎么看懂这个分析器
下一章:链接: Unity 性能优化之动态批处理(四
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。