1. 程式人生 > >Unity通過程式碼修改Standard shader的rendering mode

Unity通過程式碼修改Standard shader的rendering mode

材質編輯器上只有一個選項:


通過程式碼修改的話,需要知道那幾個選項對應的渲染引數。unity的著色器擴充套件資源裡是有Standard著色器的材質球GUI程式碼的,可以直接參考這裡:

動態改變StandardShader的RenderingMode讓模型透明

知道這些了就很好辦了,注意除了switch-case裡的程式碼外,還要設定_Modle引數。例如改為半透明模式的程式碼如下,基本上直接拷過來就行:

Material m = new Material(Shader.Find("Standard"));
m.SetFloat("_Mode", 3);
m.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
m.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
m.SetInt("_ZWrite", 0);
m.DisableKeyword("_ALPHATEST_ON");
m.EnableKeyword("_ALPHABLEND_ON");
m.DisableKeyword("_ALPHAPREMULTIPLY_ON");
m.renderQueue = 3000;