首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使统一颜色像指针一样工作?

如何使统一颜色像指针一样工作?
EN

Stack Overflow用户
提问于 2020-08-31 10:28:23
回答 1查看 52关注 0票数 0

我用一个由六个三角形组成的网格来画一个六边形。统一网格保存顶点的颜色。颜色是统一引擎的颜色。

我希望我的颜色像指针一样工作。所以我只改变了变量,所有的顶点都更新了。但这不管用。六角是白色(1f,1f,1f)而不是青色(0f,1f,1f)。

出于性能原因,我想用一个笨重的机械师。

如果你有解决办法,请告诉我。:)

代码语言:javascript
运行
复制
        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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 12:18:57

Color是一个struct (类型),而不是引用。

当你设置

代码语言:javascript
运行
复制
meshVertexColor[0] = devColor;

它是通过值传递的,因此您实际上存储了一个副本 of devColor。之后对本地devColor值的任何更改都不会自动更新数组/列表中的值。

假设你在谈论Mesh.colors,你宁愿做这样的事情

代码语言:javascript
运行
复制
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;
}

因此,每当您更改devColor的值时,就调用此方法

代码语言:javascript
运行
复制
devColor.r = 0;
SetNewColor(theMesh, devColor);

如果您愿意的话,也可以将其作为扩展。

代码语言:javascript
运行
复制
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;
    }
}

然后你就做了

代码语言:javascript
运行
复制
devColor.r = 0;
theMesh.SetNewColor(devColor);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63669065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档