关于材质修改颜色后合批的问题

我现在需要动态修改材质的颜色,目前用的是:
material.setProperty(‘mainColor’, new Color(255, 255, 255, 255))
但是我发现如果使用getSharedMaterial那么所有模型都会变成我最后设置的那个颜色。
如果使用getMaterialInstance会导致无法合批,dc变高。
目前想到的方法是根据颜色去存储材质,然后相同颜色的物体使用同一个材质,但是在颜色变多时dc也会很高。
大家都是怎么动态修改材质颜色的呢?

https://docs.cocos.com/creator/3.8/manual/zh/shader/instanced-attributes.html

3赞

uniform 值不一样,材质就不同了,合批失败

新增顶点属性

Sprite组件的颜色,会在fs中跟uv颜色混合后输出,改变颜色就能变色而不打断合批,可以参考这个方法

感谢大家的帮助 :heart: