骨骼动画怎么添加shader上去

rt,直接把shader放到custommaterail上面没有任何反应,我应该怎么做才能使shader生效呢

1赞

我是这么做的

let spine = this.node.getChildByName(this.node.name).getComponent(sp.Skeleton);
if (spine) {
spine.customMaterial = toolSpine;
let matCaches = spine[’_materialCache’];
this.scheduleOnce(()=>{
for(let x in matCaches){
let m = matCaches[x];
m.setProperty(“liShiJie”,1);
m.setProperty(“time”,100);
}

            });
        }
3赞

之前实现了一个模型 shader, 你可以参考看看

https://gitee.com/yeshao2069/cocos-creator-shader/tree/v3.0.0/RoleEffect/RoleHighLight

1赞

感谢分享,不过按照这样写了之后又提示我 material.ts:307 illegal property name: u_rate, 可以确定我的shader里面是有这个变量的;Cocos 版本3.4

感谢分享,不过我这个是2D的龙骨动画

龙骨动画shader 确实没有整理,你可以参考一下 spine的shader
https://gitee.com/yeshao2069/cocos-creator-shader/tree/v3.0.0/HitWhite

你的shader在场景里直接拖拽到spine节点上试过显示正常吗,如果不正常就是shader的原因,如果正常就是脚本代码的原因,可以复制一下你写的这段代码我看看。

我的是龙骨动画,在场景里面放上去,没有任何的变化

不过相同 的Shader给一个Sprite的话是可以正常显示的

sprite和spine的shader是不能共用的,需要以spine的默认shader为模板来写shader,估计龙骨的原理也是一样的。

:joy: 尝试了用 builtin-spine 作为模版来修改做Shader ,修改了片元着色器的输出image ,添加上去之后依然没有任何的效果。。。。是龙骨动画的问题吗

可能是,因为我用spine加这个shader可以正常显示,我没玩过龙骨也没龙骨动画资源,还真不知道龙骨动画的shader需要啥特别的东西。

:rofl:害,没法子了。感谢分享!!!!

我现在也碰到这个问题了,我的版本是2.4.6,spine的shader在web端可以正常更新属性,在android端不能更新,初始化是是什么样子,一直跑都是那个样子。大佬,请教下,后面怎么解决的?

大佬,spine在android端试过m.setProperty(“time”,100);这样动态更改属性吗?我这怎么弄都不生效,web端是正常的。

https://gitee.com/yeshao2069/cocos-creator-shader/blob/v3.4.x/demo/Creator3.4.2_2D_HitWhite/assets/FlashSpine.ts#L30

系统 : cocoscretor 3.6.2
你好。 Android手机报错: [ERROR]: TypeError: Cannot read property ‘_updateMaterial’ of undefined。