想咨询引擎组关于spine修改材质的疑问

现在项目里有个需求,使用spine的怪物在受击时需要更换spine使用到的材质来做受击表现,同时刻存在着大量的更换需求。通过性能分析发现换材质这个事情非常卡顿,查看源码发现在修改skeleton.customMaterial材质的时候,会触发updateMaterial将其_materialCache全都清空了,这时这个skeleton渲染材质的时候就会new一个MaterialInstance出来,就涉及到了一系列的材质解析。

目前对整套材质渲染还没有那么熟,想了个方案,修改源码,只要skeleton设置过的材质都在引擎层全局共享,下次需要用时如果有就直接使用缓存materialInstance,这样就可以不需要不必要的解析了。目前项目里的所有spine材质球也不会去修改其参数,最多修改的也只有顶点颜色,此属性应该也不属于materialInstance

1.为什么引擎目前是这样的实现方案,有其他的复杂因素吗
2.我初想的方案是否可行

还有个接口shareMaterial是获取共享材质

ok,我尝试下

怎么感觉设置了也没用的样子,我每次都是设置第0个的材质,是还需要其他操作吗