2016-11-30 40 views
1

我正在开发面向VR平台的360视频播放器应用程序,并期待针对移动平台进行优化。目前我有一个关于静态配料的问题。Unity3D中的静态批量工作如何在Unity3D中工作

可以说我有一个球体,即使世界结束,它也永远不会移动。但正在播放视频。这意味着其材质的纹理每更新一次就会更新一次。

我是否将这个球体标记为静态配料或放置它?

如果我将移动物体标记为静态,会影响性能吗?

+0

我倾向于说静态配料不会改变你的情况,因为材料可能不会与其他物件共享。然而,如果你喜欢1个立方体,1个球体和1个圆柱体静态显示相同的视频(和共享相同的材料),我真的很想认为它会提高性能(但我不确定这一点)。 .. – Kardux

回答

2

通常情况下,场景中的每个网格都是逐一渲染的。静态配料将尝试将多个网格组合在一起,以便它们都可以一起绘制。这可能会极大地提高平局呼叫效率。

Unity仍然会追踪每批中的各个GameObjects,这对于可以剔除它们(进一步提高渲染性能)很有用,或者需要将它们从批处理中删除。

虽然有一些条件。

静态几何不得移动。将网格组合在一起后,移动批处理中的任何GameObject都会打破有关如何创建网格的一些假设。你可以要求Unity移动静态几何体(它会尝试!),但这样做会导致错误和减速。

静态批处理中的所有对象都必须共享一个材质实例。纹理图纹很好,只要您保留该材质的单个实例(请注意,调用renderer.material克隆材质,因此您可能需要改为编辑renderer.sharedMaterial),编辑材质属性就没有问题。

在大多数情况下,激活静态批处理的最简单方法是在Unity的关卡编辑器中将GameObject标记为静态。这将在构建期间自动触发静态批处理过程。如果您需要编辑器中的静态批处理,或者如果您在游戏运行时生成静态几何,则可以使用脚本使用StaticBatchingUtility类来即时创建批处理。

如果我将移动物体标记为静态,是否会影响性能?

它会影响性能并可能导致错误。不要这样做。

我是否将此球体标记为静态配料或离开它?

仅当您有多个网格共享相同的材质实例时,静态配料才有所帮助。