ShaderHelper2 組件新體驗視頻演示:
https://www.bilibili.com/video/av69314195/
ShaderHelper2 組件我們已經介紹過兩次了,不了解的伙伴可以看下面兩篇文章:
- 新版ShaderHelper,終于支持 Creator 2.1.2 了!
- ShaderHelper2正式回歸,并全面使用TypeScript語言!
本文主要介紹這次改進的地方,
雖然 ShaderHelper2 支持了在 Cocos Creator 2.1.2 以上引擎版本使用,使用體驗也得到了改進,但是 Shawn 撰寫的組件的理念是希望能為策劃、美術以及非程式員提供內容生產的能力,在易用性上再進一步,改進功能點如下:
自動隱藏props屬性
當一個Shader Effect中不含有可調節的引數,ShaderHelper 組件將不會顯示props屬性到屬性面板上,看下圖:

可以看到上圖中,Dissolve特效組件屬性非常簡潔,僅有一個 Program 屬性,我們仍然可以使用ShaderTime組件調節動態 time 引數,
自動列舉引數到props屬性
如果一個Shader Effect 是含有引數的,當切換 Program 屬性時將會自動重繪 props 屬性,列舉出Shader 的可控引數,而且引數的Key值是只讀,不會因為誤操作修改出錯,看下圖:

props屬性中的引數 value 同樣支持動態調節,可以在場景編輯器中實時看到修改后的效果,
優化提示警告
之前的版本,在切換不同的特效時當Effect中并沒有定義USE_TEXTURE時會有警告,看下圖:

通過對 EffectAsstes 屬性檢查,將此警告屏蔽掉了,以免在使用程序中產生產生煩人的提示,檢查代碼如下:
//在材質物件上開啟USE_TEXTURE定義
let defineUserTexture = !!effectAsset.shaders.find(shader => shader.defines.find(def => def.name === 'USE_TEXTURE'));
if (defineUserTexture) {
material.define('USE_TEXTURE', true);
}
同樣,如果選擇非動態Shader,同時為節點添加了 ShaderTime 組件,也會出現類似上面的警告,同樣得到的修正:
protected update(dt) {
this._material = this.getComponent(cc.Sprite).sharedMaterials[0];
if (this.node.active && this._material && this._material.effect._properties.time) {
this._setShaderTime(dt);
}
}
代碼Github地址:
https://github.com/ShawnZhang2015/ShaderHelper2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/17923.html
標籤:其他
上一篇:程式游戲推薦(C語言貪吃蛇,python天天酷跑(需要安裝pygame),js是狠人就堅持30s)
下一篇:單相機做分屏混合
