C# 如何使统一颜色像指针一样工作?
我用六个三角形的网格画一个六边形。 Unity网格将颜色保存在顶点中。 颜色是统一引擎的颜色 我希望我的颜色可以用作指针。因此,我只需更改变量,所有顶点都会更新。但它不起作用。六边形为白色1f、1f、1f,而非青色0f、1f、1f 出于性能原因,我想使用ponter机械师 如果您有解决方案,请告诉我C# 如何使统一颜色像指针一样工作?,c#,unity3d,C#,Unity3d,我用六个三角形的网格画一个六边形。 Unity网格将颜色保存在顶点中。 颜色是统一引擎的颜色 我希望我的颜色可以用作指针。因此,我只需更改变量,所有顶点都会更新。但它不起作用。六边形为白色1f、1f、1f,而非青色0f、1f、1f 出于性能原因,我想使用ponter机械师 如果您有解决方案,请告诉我 Color devColor = new Color(1f, 1f, 1f); meshVertexColor[0] = devColor; mesh
Color devColor = new Color(1f, 1f, 1f);
meshVertexColor[0] = devColor;
meshVertexColor[1] = devColor;
meshVertexColor[2] = devColor;
meshVertexColor[3] = devColor;
meshVertexColor[4] = devColor;
meshVertexColor[5] = devColor;
meshVertexColor[6] = devColor;
meshVertexColor[7] = devColor;
meshVertexColor[8] = devColor;
meshVertexColor[9] = devColor;
meshVertexColor[10] = devColor;
meshVertexColor[11] = devColor;
meshVertexColor[12] = devColor;
meshVertexColor[13] = devColor;
meshVertexColor[14] = devColor;
meshVertexColor[15] = devColor;
meshVertexColor[16] = devColor;
meshVertexColor[17] = devColor;
devColor.r = 0f;
是结构值类型,而不是引用
当你设定
meshVertexColor[0] = devColor;
它是按值传递的,因此您实际上存储了devColor的副本。之后对本地devColor值的任何更改都不会自动更新数组/列表中的值
假设你正在谈论你宁愿做一些类似的事情
public void SetNewColor(Mesh mesh, Color color)
{
var colors = mesh.colors;
for(var i = 0; i < colors.Length; i++)
{
colors[i] = color;
}
mesh.colors = colors;
}
如果您愿意,也可以将其作为扩展
public static class MeshExtensions
{
public static void SetNewColor(this Mesh mesh, Color color)
{
var colors = mesh.colors;
for(var i = 0; i < colors.Length; i++)
{
colors[i] = color;
}
mesh.colors = colors;
}
}
public static class MeshExtensions
{
public static void SetNewColor(this Mesh mesh, Color color)
{
var colors = mesh.colors;
for(var i = 0; i < colors.Length; i++)
{
colors[i] = color;
}
mesh.colors = colors;
}
}
devColor.r = 0;
theMesh.SetNewColor(devColor);