spine shader设置uniform变量无效问题

有清除的函数,但是是未开放的 api,未来可能会删除或者改名

// @ts-ignore
spine._cleanMaterialCache();
spine.customMaterial.setProperty("cusOpacity",this.time);

也会反馈相关问题给负责 spine 的相关人员,后续完善 spine 时考虑进去

还有一个问题,为啥 spine 动画要用 spine.customMaterial去操作,而sprite直接可以用 sprite.material去操作,能统一吗

具体看你是否有用到 customMaterial,spine 是优先获取 customMaterial,我看你给的 demo 是有 customMaterial 的才这样操作,如果要统一那就把 customMaterial 去掉

但是 material 是没有在属性面板的,所有需要用代码设置

image 我在脖子这里做了一个蒙版,但是一个场景有多个动画的时候不知道为啥失效了

sprite有customMaterial的时候也可以通过material操作的

这种方式可以

多个动画失效了,这个帮忙看看

image 哦有一个生效了,感觉像是材质共享了

cache mode用了 shared cache ?

没有,使用的是realtime

有解决办法吗 @Knox

麻烦提供下能复现的demo, 我们在进一步跟进看看

https://github.com/fangyuan123456/spineTest.git,spine文件有20m,麻烦自己下载一下

你好参考这个PR的修改,合并
请把demo中对customMaterial改成 customMaterialInstance; _cleanMaterialCache这个内部接口不要调用

版本3.8.6,遇到同样问题.使用这个修改后,web无问题,JSB不生效.

已创建 issue 跟进,后续有问题,请在这个issue反馈

好的, 我去看下,这里也给个基本demo
spine_modify_custom_material.zip (362.2 KB)
web正常,渲染结果是
result_expect

这个问题可不用修改引擎,直接参考 这个 issue 的处理方案即可。之前处理web的修复方案存在漏洞(只要动画中包含不同的blendSrc, blendDst就会出问题),建议用 issue 的方案

好的.我这里只是给出的一个最简单的修改属性的demo.
具体项目也按照 issue 的方案修改,目前web 和 JSB运行结果一致.