在Unity中结合网格与实例对象的差异

时间:2017-02-02 07:30:18

标签: unity3d optimization unity5 mesh 3dsmax

我非常需要优化我的一些Unity项目,而且我有很多来自3DsMax的对象,所以我想知道组合网格会对内存产生任何影响/性能或我应该将对象实例留给对方,因为它会为我节省一些空间。

这就产生了这样一个问题:组合网格对象或实例对象之间有什么区别,因为它会节省大量内存并且如果一个人知道差异和更好的话会有麻烦

期待有关这两个的简要信息

谢谢

2 个答案:

答案 0 :(得分:1)

如果您拥有许多仅在场景中出现一次或两次的独特资产,例如3D FPS中的独特建筑,而不是模拟城市风格游戏中的克隆房屋,则组合非常有用。如果你有一个在场景中多次出现的模型,那么拥有Unity(自动)batch them会更高效,这是Unity的默认行为。例如,假设您的场景位于艺术画廊中;如果画廊包含十几个不同的雕塑,那么将它们结合起来。如果它包含十几个相同的雕塑,请不要打扰Unity will batch them for you

但是,您应该谨慎使用different materials,每种材料都会增加抽奖计数。所以,如果你有10个相同的型号,但使用5种不同的材料,那将是昂贵的。这种方法是使用单一材质的纹理图集,每种模型使用不同的UV贴图。这意味着您有许多不同的模型,但由于单一材料而节省了渲染时间。

另外,请注意透明着色器比不透明要贵得多,如果在彼此前面有三个半透明对象,则至少有4个渲染过程。

你可能知道这是一个复杂的主题,有很多变量(比我在这里描述的要多得多),最好通过使用分析器来判断。

以下是我在创建移动游戏时学到的一些一般经验法则,这些游戏自然具有关键性能:

  • 尽可能少地使用材料
  • 使用尽可能少的纹理,在材质之间共享纹理
  • 尽可能多地回收模型。通常,以不同角度或不同材料定向的模型对于玩家来说可能看起来像一个全新的模型,特别是如果他们的注意力在游戏的其他地方那么
  • 广泛使用LODS
  • 确保模型干净,在导入之前删除所有不必要的顶点
  • 导入后认为是否有关于可用较少顶点表示的模型的任何内容
  • 正常映射的好用可以得到回报,具体取决于平台。如果你可以交换1000个顶点用于256 px法线贴图和50个顶点,那么就这样做,否则不要打扰常规贴图只是为了节省一些顶点

答案 1 :(得分:0)

我创建了一个解释绘制调用,静态批处理,光映射等的教程。

https://www.youtube.com/watch?v=x0t2xylbTo8&t=253s