我正在尝试通过代码更改对象的材质
if (MoveToPoint(point[stage]))
{
stage = stage == 1 ? 0 : 1;
if (on_x)
transform.localScale = new Vector3(-transform.localScale.x, 1, 0.032f);
else
{
gameObject.GetComponent<MeshRenderer>().materials[0] = materials[stage];
}
}
在这种情况下,尽管满足条件,但对象的材质不会改变。在更改材质(在其他情况下)之前尝试禁用 Animator 和 NavMeshAgent,但没有帮助。问题是什么?(下面是材质数组和标准物体材质)
您需要访问 MeshRenderer 组件的材质属性
在 Start() 中的某个地方尝试无条件直接调用会很好
Materials 返回数组的副本,而不是引用。您需要更改整个数组。你得到一个数组,你用你自己的替换所需的索引。然后你把它分配回去。利润。