Animation 如何减少对动画游戏对象的调用?

Animation 如何减少对动画游戏对象的调用?,animation,optimization,graphics,rendering,unity3d,Animation,Optimization,Graphics,Rendering,Unity3d,我有一个场景,比如我有一堵墙,每当玩家撞到墙时,它就会分成几块。每一块都是那堵墙的子墙。每一块都使用相同的材料。所以我尝试了动态批处理,但没有减少抽签次数 然后我尝试了CombineChildren.cs,它工作并合并了所有网格,从而减少了drawcalls,但每当我的播放器撞到墙上时,它就不会播放动画 我无法使用此链接中的答案尝试此wiki中的SkindMeshCombiner.cs 因为我的游戏对象有网格渲染而不是蒙皮网格渲染 有没有其他解决办法 所以我尝试了动态批处理,但并没有减少消耗 电

我有一个场景,比如我有一堵墙,每当玩家撞到墙时,它就会分成几块。每一块都是那堵墙的子墙。每一块都使用相同的材料。所以我尝试了动态批处理,但没有减少抽签次数

然后我尝试了CombineChildren.cs,它工作并合并了所有网格,从而减少了drawcalls,但每当我的播放器撞到墙上时,它就不会播放动画

我无法使用此链接中的答案尝试此wiki中的SkindMeshCombiner.cs

因为我的游戏对象有网格渲染而不是蒙皮网格渲染

有没有其他解决办法

所以我尝试了动态批处理,但并没有减少消耗 电话

如果要减少对移动对象的绘制调用,动态批处理几乎是唯一的方法(除非您自己尝试实现类似的方法)。 但是,如中所述,它有一些局限性

特别是:

  • 要批处理的对象的顶点数限制
  • 所有人都必须共享相同的材质(不是相同材质的不同实例-请确保选中此选项)
  • 没有光照贴图对象
  • 没有多路径着色器
确保满足文档中列出的所有限制,然后动态批处理应该可以工作

然后我尝试了CombineChildren.cs,它成功地将所有网格组合在一起 减少抽签次数,但每当我的球员撞到墙上时,就没有了 播放动画


这是因为在组合之后,所有游戏对象都被组合成一个唯一的对象。您不能再独立地移动它们。

将GO(墙)的网格渲染器更改为SkindMeshRenderer并将SkindMeshCombiner.cs应用于该渲染器如何?导入和蒙皮网格时,蒙皮网格渲染器将自动附着到网格(包含装备)。这样做不会有任何好处。好吧,我做了一些类似于将墙的非动画部分合并到一个网格中的事情,通过将CombineChildren和墙的所有其他动画子GO修改到每个单独的网格中,所有这些子GO现在都与动态批处理一起批处理。我现在唯一担心的是,它绘制的顶点像150K。这个数量可以吗,或者我需要减少它?一堵墙的150K顶点看起来很多。您能否编辑您的问题并澄清您的模型是如何组成的?(层次结构、每个模型的顶点数等)不是针对墙,而是针对由许多墙组成的整个场景。基本上,这是摄影机渲染的所有路径的顶点数。我拥有的最大drawcalls为32,最小drawcalls为14。这些数据对整个场景来说是正常的还是有问题?