2013-04-30 50 views
2

我在游戏中总共有12种材质。然后我有各种各样的Gameobjects,例如Gameobject1还有10个儿童,每个儿童使用2个相同的Materials.Now与Gameobject1我有20个绘制调用我想减少它们,我打开unity3d中的动态批处理并将CombineChildren.js附加到GameObject1,但结果仍然相同我有20个drawcalls,但我想将它缩减为2个绘制调用,因为我正在使用Gameobject1中只有两种材质反复出现。我出错了吗?在Unity3d中共享素材

任何帮助,将不胜感激

+0

你在谈论静态或动态GameObjects? – Heisenbug 2013-04-30 08:04:48

+0

动态Gameobjects.I使用游泳池系统在一个位置上spoker gameobject然后despawn他们,然后产生他们t其他点 – hariszaman 2013-04-30 08:21:07

+1

你检查了[绘制呼叫批处理](http://docs.unity3d)中的所有条件。 com /文档/手册/ DrawCallBatching.html)像相同的大小,灯光,阴影,..会见?如果是这样,请在编辑器中尝试一下,绘制调用次数是否真的取决于孩子的数量。暂停并将其中的5个设置为不活动,然后查看绘制调用是否减少。为了得到逼真的结果,你需要使用相同的质量设置,如在你的目标玩家平台 – Kay 2013-04-30 12:05:48

回答

0

牺牲图形质量在我来说,我能够通过所有的网格相结合来解决这个问题减少将childs游戏对象映射到与unity3D一起提供的CombineMeshUtility.js。所以父游戏对象(Empty Gameobject)现在有1个游戏对象,它是所有孩子的网格,然后它有其他没有任何渲染器或材质的子游戏对象。我希望这是明确的

0

(1)使用闭塞只渲染你的场景中的摄像机观看。遮挡是减少绘制调用的一种非常有效的方式。

Occlusion Culling

(2)使用相同的材​​料为对象。

(3)你可以光照贴图你的场景。 然后使用此工具将所有光照贴图压缩为一张大地图。 Tool found here in detailed explanation

Scene Optimization

,如果你使用的所有三种方法,您的绘图调用将急剧没有的功能