如何在运行时改变材料颜色和发射颜色?

问题描述 投票:0回答:1

我想在游戏中给我的小方块添加一个发光效果。我成功地将发光效果应用在那些已经存在于游戏中的不同颜色的立方体上。

下图是我目前的进展,并通过图形来表示我的问题。enter image description here

我想改变运行时产生的立方体的正常和发光颜色,但到现在为止我还没有成功。

我尝试了这段代码,通过上面的代码,我可以改变运行时生成的立方体的法线和发光颜色。

    GetComponent<MeshRenderer>().material.color = cubeColors[cubeColorIndex];
    //GetComponent<MeshRenderer>().material.SetColor("_Color", cubeColors[cubeColorIndex]);
    GetComponent<MeshRenderer>().material.SetColor("_EmissionColor", cubeColors[cubeColorIndex] * 2f);

通过上面的代码,我可以应用新的发射色,但仍然不能成功地将主色应用到立方体材料上。还有,改变发射色强度的正确方法是什么?

这是我的立方体检查器的样子。

enter image description here

unity3d
1个回答
0
投票

第一:在你使用的着色器中没有 _Color_BaseColor 你想设置。

第二:你差不多了。其实发射强度只是一个乘法,但用的是 Mathf.LinearToGammaSpace

var meshRenderer = GetComponent<MeshRenderer>();
var material = meshRenderer.material;

material.SetColor("_BaseColor", cubeColors[cubeColorIndex]);
material.SetColor("_EmissionColor", cubeColors[cubeColorIndex] * Mathf.LinearToGammaSpace(2f));
© www.soinside.com 2019 - 2024. All rights reserved.