Unity - 如何为对象提供相同的材质进行批处理?

问题描述 投票:0回答:2

我正在针对移动设备优化我的游戏。因此,少量批次非常重要。通过使用“帧调试”,我发现由于某种原因,即使节点是静态的并且据我所知具有相同的材质,也会对每个节点执行“绘制网格节点”命令。帧调试器表示对象不能批量处理,因为“对象具有不同的材质”。我不明白为什么以及如何解决这个问题。这些节点都基于它们的预制件。他们之间唯一不同的是他们的立场。请帮忙

帧调试窗口:

每个节点的预制件:

游戏中节点之一的示例(仅它们的位置不同):

unity-game-engine
2个回答
0
投票

经过 2 天的悲伤和观看 YouTube 上的每个图形表演教程后问题解决了。

基本上,我需要将每个 .material 代码更改为 .sharedMaterial,因为对于我来说未知的原因,统一在使用 .material 时创建了材质的副本,之后每个节点都获得了自己的材质。正因为如此,表现才如此糟糕。现在它可以工作了,我的直播质量也得到了提高,因为所有内容都进行了批处理,将绘制调用从 300 次减少到 10 次:)

我希望未来的读者能从中得到帮助!


0
投票

如果您想更改材质的属性,则更改将应用于使用相同材质的所有对象,这意味着“共享”。因此,使用 MaterialPropertyBlock 将是您所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.