1. 程式人生 > >【unity實用技能】unity在遊戲中更換角色的shader,比如加個流光

【unity實用技能】unity在遊戲中更換角色的shader,比如加個流光

原本想著這個功能怎麽實現,剛好在項目裏看到這裏記錄一下。

首先項目的模型裏會有一個基本的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,比如加個流光