【unity實用技能】unity在遊戲中更換角色的shader,比如加個流光
阿新 • • 發佈:2018-03-10
無原本想著這個功能怎麽實現,剛好在項目裏看到這裏記錄一下。
首先項目的模型裏會有一個基本的Material,這個就是美術出給你的模型的材質。
可能有的需求是在遊戲中觸發一個事件,你身上加個流光或者描邊等效果。
我們知道這些效果如果要表現在身上,用特效是不好看的,要用Shader去表現。
這時候就需要你換一個Shader。
而其實我們不會直接換Shader的,是換一個Material。
所以本質上是用一個基本是原來Material復制過來的新Material,而改了他的Shader。
然後在觸發的時候換了Material。
如:
Material[] effectMaterials = new Material[materials.Length]; for (int j = effectMaterials.Length; --j >= 0;) { if (null == materials[j]) { effectMaterials[j] = null; continue; } Material effectMaterial = new Material(materials[j]); effectMaterial.shader = DistShader; effectMaterials[j] = effectMaterial; }
【unity實用技能】unity在遊戲中更換角色的shader,比如加個流光