我已经在Unity中建立了一个自定义金字塔,如下所示:
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.Clear();
Vector3[] vertices = {
new Vector3(0.0f, 0.5f, 0.0f),
new Vector3(0.5f, 0.0f, 0.5f),
new Vector3(-0.5f, 0.0f, 0.5f),
new Vector3(-0.5f, 0.0f, -0.5f),
new Vector3(0.5f, 0.0f, -0.5f),
};
int[] triangles = {
1, 2, 3,
1, 3, 4,
1, 0, 2,
2, 0, 3,
3, 0, 4,
4, 0, 1
};
mesh.vertices = vertices;
mesh.triangles = triangles;
我正在为金字塔着色,就像在统一文档中所说的那样:
Color[] colors = new Color[vertices.Length];
for (int i = 0; i < vertices.Length; i++)
colors[i] = Color.Lerp(Color.red, Color.green, vertices[i].y);
// assign the array of colors to the Mesh.
mesh.colors = colors;
但这不会改变任何事情。
我没有任何对象,只有这个脚本。 有什么想法吗?
答案 0 :(得分:1)
请注意,mesh.colors
中的注释//(请注意,大多数内置的着色器不会显示顶点颜色。请使用诸如粒子着色器之类的颜色来查看顶点颜色)
因此,为了在MeshRenderer
组件中看到这些颜色,请添加使用诸如“顶点”或“粒子着色器”的材料。
因此
Project
视图(资产)中Create
→Material
Shader
查找并选择例如Particles
→Standard Unlit
(或者如果您想接收闪电Standard Surface
)MeshRenderer
→material
中,或者简单地将其拖动到Scene
视图中的相应对象上(后者可能不起作用如果该对象还没有网格)结果:
答案 1 :(得分:0)
除了https://stackoverflow.com/a/55714190/617889:
使用通用渲染管线时,您需要使用其他着色器:
Univeral Render Pipeline
\ Particles
\ Lit
(有闪电)Univeral Render Pipeline
\ Particles
\ Unlit
(无闪电)