版本:3.5.2
参考:cocos论坛-各位大佬,ccc3.x你们的spine置灰是如何做的
一 Spine能不能通过color置灰?
设置spine的node的color为灰色,让spine置灰行不行?
如下图所示,设置color置灰是不行的,还是会有彩色。
原图 color置灰 shader置灰
二 Spine使用Shader置灰
从资源管理栏内置的effects中复制一份builtin-spine到resources/shader下,并命名为spine-gray.effect。
在resources/shader文件夹,右键创建-材质,命名为spine-gray.mtl
这时有了置灰的effect和material两个文件
选择spine-gray.mtl,设置属性Effect为spine-gray.effect。
在vs-code中打开spine-gray.effect,将 sprite-fs中的
return o;
改为
float gray = 0.2126 * o.r + 0.7152 * o.g + 0.0722 * o.b; return vec4(gray, gray, gray, o.a);
代码中动态给spine置灰,用resources.load加载置灰材质spine-gray.mtl,并赋值给spine的customMaterial属性。
resources.load("shader/spine-gray", Material, (error, asset) => { console.log(asset); this.spine1.customMaterial = asset; })
显示效果