AnimationInstancing插件是官方推出用来处理GPU渲染骨骼动画的一个插件。具体不表。
由于项目需要,目前需要有同屏将近200个单位同时上场战斗,每个单位都使用了骨骼动画。由于传统的SkinnedMeshrenderer组件是不能合批的。如果使用传统的方式,势必会有draw call过高的影响。因此经过评估后,使用官方推出的AnimationInstancing插件。
在使用的过程中,踩了一些坑。
1.在2018.3版本中,如果材质和shader没有打在同一个AssetBundle中,在手机上会渲染不出物体。究其原因是如果分开打包,shader的GPU Instance会失效。当把材质和Shader打在同一个AB包中时,问题解决。
2.使用插件时出现了所有的战斗单位渲染时采用了同样的一个mesh作为形象,究其原因是因为AnimationInstancing是以SkinnedMeshRender组件所在的gameobject的名字作为一个单位的唯一标识符。而项目中所有单位的skinnedMeshRenderer组件所在的gameobject都是同名的。。因此修改了插件源码,使用父物体的名称作为唯一标识符。该问题解决。