Unity3d 如何在Unity项目中使用顶点颜色?

Unity3d 如何在Unity项目中使用顶点颜色?,unity3d,mesh,vertex-shader,Unity3d,Mesh,Vertex Shader,我试图以编程方式创建网格网格,并且在使用UV时能够看到网格。但是现在我尝试在网格上使用颜色,这样每个第四行的颜色都会不同(例如图形的短轴和长轴),但是现在网格不会显示出来 我尝试过的事情: 我相信我已经实现了通用渲染管道(Universal RP)来创建顶点颜色着色器。但那没用 我还尝试使用内置的particles/Standard Unit着色器。这不起作用,当我改为通用RP时,我相信它破坏了它,因为材质在预览窗格中显示为粉红色 还从其他stackoverflow答案复制了几个着色器,这

我试图以编程方式创建网格网格,并且在使用UV时能够看到网格。但是现在我尝试在网格上使用颜色,这样每个第四行的颜色都会不同(例如图形的短轴和长轴),但是现在网格不会显示出来

我尝试过的事情:

  • 我相信我已经实现了通用渲染管道(Universal RP)来创建顶点颜色着色器。但那没用

  • 我还尝试使用内置的particles/Standard Unit着色器。这不起作用,当我改为通用RP时,我相信它破坏了它,因为材质在预览窗格中显示为粉红色

  • 还从其他stackoverflow答案复制了几个着色器,这些着色器本应修复此问题

这是我生成网格的代码

公共类网格:单一行为
{
公共浮子厚度=0.001f;
公共浮点数间距=2f;
公共关系专业=4;
公共色彩;
公共色小彩色;
私有向量3[]个顶点;
私有int[]三角形;
私人色彩[]颜色;
私有void Start()
{
transform.localScale=newvector3(216f,279.5f,0.01f);
DrawGrid();
}
公共网格()
{
Vector2Int numLines=新Vector2Int
{
x=Mathf.floorPoint(transform.localScale.x/(间距+厚度)),
y=Mathf.FloorPoint(transform.localScale.y/(间距+厚度))
};
int totalines=numLines.x+numLines.y;
int verticesPerLine=4;
int triangleIdxPerLine=6;
整数=总计*垂直线;
int numTriangles=总线*三角线;
顶点=新矢量3[num垂直];
三角形=新整数[numTriangles];
颜色=新颜色[数值];
var minorspace=space/transform.localScale.x;
int i=0;
对于(浮动x=0.0f;x<1;x+=最小间距+厚度,i++)
抽绳(i,新矢量2(x,0.0f),新矢量2(x+厚度,1.0f));
对于(浮动y=0.0f;y<1;y+=最小间距+厚度,i++)
抽绳(i,新矢量2(0.0f,y),新矢量2(1.0f,y+厚度));
打印(颜色、长度);
印刷品(majorColor);
GetComponent().mesh=新网格
{
顶点=顶点,
颜色=颜色,
三角形=三角形
};
}
专用无效绘制线(int idx,矢量2点1,矢量2点2){
int vOffset=idx*4;
顶点[vOffset]=新向量3(点1.x,点1.y);
顶点[vOffset+1]=新向量3(点2.x,点2.y);
顶点[vOffset+2]=新向量3(点1.x,点2.y);
顶点[vOffset+3]=新向量3(点2.x,点1.y);
颜色颜色=idx%主色==0?主色:最小色;
颜色[vOffset]=颜色;
颜色[vOffset+1]=颜色;
颜色[vOffset+2]=颜色;
颜色[vOffset+3]=颜色;
int-tOffset=idx*6;
三角形[tOffset]=vOffset;
三角形[tOffset+1]=vOffset+1;
三角形[tOffset+2]=vOffset+2;
三角形[tOffset+3]=vOffset+1;
三角形[tOffset+4]=vOffset;
三角形[tOffset+5]=vOffset+3;
}
}

我在本YT教程的帮助下找到了答案

我正在渲染我的相机对准的另一侧的三角形

只是改变了三角形索引的顺序

三角形[tOffset]=vOffset;
三角形[tOffset+1]=vOffset+2;
三角形[tOffset+2]=vOffset+3;
三角形[tOffset+3]=vOffset+2;
三角形[tOffset+4]=vOffset+1;
三角形[tOffset+5]=vOffset+3;

这里还有我的通用rp设置的图像。UniversalRP ProjectSettings-UniversalRP VertexColorShader-UniversalRP结果-健全性检查1:变换比例未设置为0或-1。健全性检查2:检查它如何在帧渲染器中渲染,并向我们提供该信息。