Optimization 在Unity3d中共享材质

Optimization 在Unity3d中共享材质,optimization,rendering,unity3d,shader,frame-rate,Optimization,Rendering,Unity3d,Shader,Frame Rate,我的游戏中总共有12种材料。然后我有各种各样的游戏对象,它们都有许多附加材料,例如Gameobject1还有10个孩子,每个孩子使用2种相同的材料。现在有了Gameobject1,我有20个抽签调用,我想减少它们,为此我在unity3d中打开了动态批处理,并将CombineChildren.js附加到了GameObject1但结果仍然是一样的,我有20个抽签调用,但我想将其减少为2个抽签调用,因为我在GameObject1中只重复使用了两种材质。我哪里出错了 如果您有任何帮助,我们将不胜感激。(

我的游戏中总共有12种材料。然后我有各种各样的游戏对象,它们都有许多附加材料,例如Gameobject1还有10个孩子,每个孩子使用2种相同的材料。现在有了Gameobject1,我有20个抽签调用,我想减少它们,为此我在unity3d中打开了动态批处理,并将CombineChildren.js附加到了GameObject1但结果仍然是一样的,我有20个抽签调用,但我想将其减少为2个抽签调用,因为我在GameObject1中只重复使用了两种材质。我哪里出错了

如果您有任何帮助,我们将不胜感激。

(1)使用遮挡仅渲染场景中的摄影机正在查看的内容。 遮挡是减少绘制调用的一种非常有效的方法

(2) 对对象使用相同的材质

(3) 可以对场景进行光照贴图。 然后使用此工具将所有光照贴图压缩为一个大贴图。


如果您使用这三种方法,您的绘图调用将大大减少,而不会影响功能的图形质量

在我的例子中,我能够通过将儿童游戏对象的所有网格组合到一个带有unity3D附带的CombineMeshutibility.js的网格来解决这个问题。因此,父游戏对象(空游戏对象)现在有一个游戏对象,它是所有子游戏的网格,然后它有其他没有任何渲染器或材质的子游戏对象。我希望这是清楚的

你说的是静态还是动态游戏对象?动态游戏对象。我使用一个池系统在一个位置捕捉游戏对象,然后将其分解,然后生成其他点。你是否检查了所有条件,如大小、灯光、阴影等,。。他们见面了吗?如果是这样,请在编辑器播放器中试用draw调用的数量是否真的取决于子级的数量。暂停并将其中5个设置为非活动,然后查看draw调用是否减少。为了获得真实的结果,你需要使用与目标玩家平台相同的质量设置。我玩了游戏,暂停它,从gameobject one的10个孩子中各移除1个材料,然后玩了游戏,抽签结果仍然是20。我仍在等待答案。除此之外,有人能告诉我是否有游戏对象有X个子对象,每个X有2个相同的材质如何在所有X个子对象之间共享这些材质