Пытаюсь изменить материал объекта через код
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 перед сменой материала ( в else), не помогло. В чём проблема? (Ниже представлен массив материалов и стандартный материал объекта)
Необходимо обращаться к свойству material компонента MeshRenderer
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>().material = materials[stage];
}
Хорошо бы попробовать прямой вызов без условий где-то в Start()
gameObject.GetComponent<MeshRenderer>().material = materials[0];
Materials возвращает копию массива, а не ссылку. Надо менять массив целиком. Получаешь массив, нужный индекс заменяешь на свой. И обратно присваиваешь. Профит.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости