Albedo的Color修改
obj.GetComponent<Renderer>().material.SetColor("_Color", new Color(0, 0, 0));
_Color是单下划线
Emission的Color修改
obj.GetComponent<Renderer>().material.SetColor("_EmissionColor", new Color(0, 0, 0, 0));
_EmissionColor是单下划线
但是注意:如果要实现交换变色的话,也就是在Update里面进行变换颜色的话,最好还是修改对应组件的材质,不然直接修改颜色的值的话,Unity里面会来不及进行渲染,导致颜色更改不来,可以使用以下方法(连续变换),如果不想要连续变换,只需要变换一次的话,可以使用协程
[Header("灯光")]
public GameObject light; // 自行拖动
[Header("材质一")]
public Material lightColor1; // 自行拖动
[Header("材质二")]
public Material lightColor2; // 自行拖动
private float timer; // 计时器
private float interval = 1f;
private bool isTurn;
private void Awake()
{
isTurn = true;
}
private void Update()
{
timer += Time.deltaTime;
if (timer > interval)
{
if (isTurn)
light.GetComponent<MeshRenderer>().material = lightColor1;
else
light.GetComponent<MeshRenderer>().material = lightColor2;
isTurn = !isTurn;
timer = 0;
}
}