【发布时间】:2021-06-19 14:56:44
【问题描述】:
我通过设置MaterialPropertyBlock 来改变网格的颜色
mpb = new MaterialPropertyBlock();
Color color = Color.red
mpb.SetColor("_Main", color);
_meshRenderer.SetPropertyBlock(mpb);
问题是颜色以 100% 的强度应用。颜色或MaterialPropertyBlock 上没有alpha 属性。
您能否建议我如何通过 alpha 使这种颜色变化更加渐变?我想补间和淡出红色效果,而不是仅仅 100% 打开或关闭(注意:我知道我在这里没有使用补间,因为一旦我知道如何在上面设置它,我就会补间 alpha)。
更新
根据@TEEBQNE 的建议,我尝试在构造函数中设置 alpha,但即使在 0 时它也会以最大强度显示
mpb = new MaterialPropertyBlock();
Color color = new Color(0, 255, 0, 0f); // Still shows 100% color change
mpb.SetColor("_Main", color);
_meshRenderer.SetPropertyBlock(mpb);
更新
这个问题是特定于着色器的,我必须设置另一个属性(特别是 "_Color" alpha 属性)。所以我的一般回答是添加颜色 + alpha 将取决于您的特定着色器和特定的命名属性。
【问题讨论】:
-
为什么会有 alpha 属性?作为属性的颜色可以是 rgb 或 rgba。只需将 alpha 指定为颜色的第四个浮点数。
Color newRed = new Color(1.0f, 0.0f, 0.0f, a);然后用这种新颜色调整 alpha 浮点数并应用它。 -
啊,所以你可以在构造函数中设置颜色,但之后不能。我会试试这个谢谢。
-
没错。让我知道你是否能正常工作。
-
不幸的是它不起作用,似乎完全忽略了 alpha 通道。我尝试在应用之前将 alpha 设置为 0,它仍然显示为 100% 强度。
-
此材质使用的是哪个默认着色器?它需要在透明度通行证上。尝试不亮/透明。或者尝试编辑您当前材料的颜色
albedo
标签: c# unity3d shader alpha tween