如何通过代码更改 Unity 中着色器的 alpha
How to change alpha of a Shader in Unity by code
我有一个 material 设置为透明的游戏对象,我想将其 alpha 更改为 80 而不是 255。
但我想通过代码来完成,而不是使用编辑器滑块。
是否有一种仅使用一行代码来更改着色器的 alpha 的简单方法?
类似于:
MyObject.GetComponent<Material>().shader.alpha = 80;
我浏览了 Internet,只发现了更复杂的解决方案...
我认为这应该可以解决问题:
public class SetAlpha : MonoBehaviour
{
public Material materialWithAlphaValue;
public void ChangeAlphaValue(Color color)
{
materialWithAlphaValue.SetColor("_MY_COLOR_SHADER_VARIABLE_NAME", color);
}
}
更新:
public class SetAlpha : MonoBehaviour
{
public Material materialWithAlphaValue;
public void ChangeAlphaValue(float alpha)
{
var color = materialWithAlphaValue.GetColor("_MY_COLOR_SHADER_VARIABLE_NAME");
materialWithAlphaValue.SetColor("_MY_COLOR_SHADER_VARIABLE_NAME", new Color(color.r, color.g, color.b, alpha));
}
}
更新 2:
使用 Material.Color
与使用 Material.GetColor("_Color");
相同,这是标准统一着色器中基色的默认命名。
public void ChangeDefaultMatAlpha(float a)
{
_MyMaterial.color = new Color(_MyMaterial.color.r, _MyMaterial.color.g _MyMaterial.color.b,
a);
}
我有一个 material 设置为透明的游戏对象,我想将其 alpha 更改为 80 而不是 255。 但我想通过代码来完成,而不是使用编辑器滑块。 是否有一种仅使用一行代码来更改着色器的 alpha 的简单方法? 类似于:
MyObject.GetComponent<Material>().shader.alpha = 80;
我浏览了 Internet,只发现了更复杂的解决方案...
我认为这应该可以解决问题:
public class SetAlpha : MonoBehaviour
{
public Material materialWithAlphaValue;
public void ChangeAlphaValue(Color color)
{
materialWithAlphaValue.SetColor("_MY_COLOR_SHADER_VARIABLE_NAME", color);
}
}
更新:
public class SetAlpha : MonoBehaviour
{
public Material materialWithAlphaValue;
public void ChangeAlphaValue(float alpha)
{
var color = materialWithAlphaValue.GetColor("_MY_COLOR_SHADER_VARIABLE_NAME");
materialWithAlphaValue.SetColor("_MY_COLOR_SHADER_VARIABLE_NAME", new Color(color.r, color.g, color.b, alpha));
}
}
更新 2:
使用 Material.Color
与使用 Material.GetColor("_Color");
相同,这是标准统一着色器中基色的默认命名。
public void ChangeDefaultMatAlpha(float a)
{
_MyMaterial.color = new Color(_MyMaterial.color.r, _MyMaterial.color.g _MyMaterial.color.b,
a);
}