VertexColor着色器在构建的应用程序中无法正常工作

我想改变我的网格的顶点颜色。 光源不得影响具有该着色器的对象,其光照必须由其顶点颜色确定,因此我将Lighting Off 。 我使用这个简单的着色器:

 Shader "VertexColored/Simple" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Pass { ColorMaterial AmbientAndDiffuse Lighting Off SetTexture [_MainTex] { Combine texture * primary } } } Fallback "VertexLit" } 

而这个脚本:

 using UnityEngine; using System.Collections; public class BehaviourScript : MonoBehaviour { void Start() { Color[] exclrs = new Color[11] { new Color32(25, 25, 25, 255), new Color32(50, 50, 50, 255), new Color32(75, 75, 75, 255), new Color32(150, 150, 150, 255), new Color32(200, 200, 200, 255), new Color32(255, 255, 255, 255), new Color32(200, 200, 200, 255), new Color32(150, 150, 150, 255), new Color32(75, 75, 75, 75), new Color32(50, 50, 50, 255), new Color32(25, 25, 25, 255), }; Mesh mesh = GetComponent<MeshFilter>().mesh; Vector3[] vertices = mesh.vertices; Vector3[] normals = mesh.normals; Color[] colors = mesh.colors; for(int i = 0; i < vertices.Length; i++) { for(int j = 0; j < 11; j++, i++) { colors[i] = exclrs[j]; } i--; } mesh.colors = colors; } } 

当游戏启动时,在编辑器中我可以看到: 在这里输入图像说明

完全是我想要达到的!

但在PC(x86)版本中,我看到这个: 在这里输入图像说明

为什么编辑器和内置.exe的结果有所不同? 我应该怎么做才能看到我的效果在建立版本? 也许我需要使用另一个着色器?

Fallback "VertexLit"可能隐藏了主着色器的问题,尽管对我来说看起来很好。 您应该仍然可以删除该行,直到您知道主着色器正常工作。

我的其他猜测是,由于某种原因网格颜色不会被设置。 你使用.sharedMesh而不是.mesh访问器?

我想,为了简化这个问题,你可以做很多的尝试和错误。