簡體   English   中英

我如何管理使 Unity Color 像指針一樣工作?

[英]How do I mange to make Unity Color work like pointer?

我正在使用六個三角形的網格在 Unity 中繪制一個六邊形。 Unity 網格將顏色保存在頂點中。 顏色是 Unity 引擎顏色。

我希望我的顏色作為指針工作。 這樣我只更改變量並更新所有頂點。 但它不起作用。 六邊形是白色 (1f, 1f, 1f) 而不是青色 (0f, 1f, 1f)。

出於性能原因,我想使用 ponter 機械師。

請讓我知道一個解決方案,如果你有一個。 :)

        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;

Colorstruct類型)而不是引用。

當你設置

meshVertexColor[0] = devColor;

它是按值傳遞的,因此您實際上存儲了devColor副本 之后對本地devColor值的任何更改都不會自動更新數組/列表中的值。

假設你在談論Mesh.colors你寧願做類似的事情

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的值時,你就會調用這個方法

devColor.r = 0;
SetNewColor(theMesh, devColor);

如果您願意,也可以將其作為擴展名

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM