新版ShaderHelper,終於支持 Creator 2.1.2 了!

之前有不少夥伴反饋 ShaderHelper 在 2.1.2 版本中不能工作,非常抱歉,讓你們久等了!

ShaderHelper 組件在 2.0.x 版本中有不少夥伴在使用,其實這裏要感謝「Colin」大神,我是在他的git開源版本基本上修改而來的;同時要感謝「大掌教」,ShaderHelper中集成了大多數Shader特效是在「大掌教」的倉庫中搬運過來的。

這一次,我仍然做一名搬運工,將 Cocos Creator 2.1.2 範例合集中的 custom_material 案例認真研究了一下,重新編寫了新版本的 ShaderHelper2 終於可以讓 ShaderHelper 又活過來了!下面是 ShaderHelper2 完整組件代碼:

let ShaderProperty = cc.Class({	
    name: 'ShaderProperty',	
    properties: {	
        key: '',	
        value: '',         	
    }	
});	
cc.Class({	
    extends: cc.Component,	
    properties: {	
        effect: cc.EffectAsset,   //effect資源	
        speed: 0.01,              //控制動態Shader的time參數	
        props: [ShaderProperty],  //shader參數	
    },	
    start () {	
        if (!this.effect) {	
            return;	
        }	
        //獲取精靈組件	
        let sprite = this.node.getComponent(cc.Sprite);	
        if (!sprite) {	
            return;    	
        }	
        //實例化一個材質對象	
        let material = new cc.Material();	
        //在材質對象上開啓USE_TEXTURE定義	
        material.define('USE_TEXTURE', true); 	
        //爲材質設置effect,也是就綁定Shader了	
        material.effectAsset = this.effect;	
        material.name = this.effect.name;	
        //將材質綁定到精靈組件上,精靈可以綁定多個材質	
        //這裏我們替換0號默認材質	
        sprite.setMaterial(0, material);	
        //從精靈組件上獲取材質,這步很重要,不然沒效果	
        this.material = sprite.getMaterial(0);	
        //初始化參數	
        this.time = 0;	
        this.props.forEach(item => this.material.setProperty(item.key, item.value));	
    },	
    /**	
     * 在update事件中更新材質參數	
     * 不同的Shader這裏可能需要重寫	
     */	
    update () {	
        if (!this.material || !this.speed) {	
            return;	
        }	
        if (this.flag) {	
            this.time += this.speed;	
        } else {	
            this.time -= this.speed;	
        }	
        if (this.time >= 1.2) {	
            this.flag = 0;	
        } else if (this.time <= -0.2 ) {	
            this.flag = 1;	
        }	
        //更新Shader代碼中的time參數	
        this.material.setProperty('time', this.time);  	
    },	
});

由於比較倉促,ShaderHelper2 使用上還與老版本有所差異,同時支持的Shader特殊只有兩個,也歡迎你向 ShaderHelper2 提交更多的 effect 特效文件!

在公衆號上回復【ShaderHelper2】獲取項目,感謝你的支持,在前進的道路上我們一起砥礪前行,共同成長!

640?wx_fmt=jpeg

640
640?wx_fmt=png

Creator星球遊戲開發社區

長按二維碼,關注我們!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章