版本: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;
        })

  

显示效果

 

 

 

posted on 2022-10-24 15:42  gamedaybyday  阅读(601)  评论(0编辑  收藏  举报