Пытаюсь изменить материал объекта через код
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 возвращает копию массива, а не ссылку. Надо менять массив целиком. Получаешь массив, нужный индекс заменяешь на свой. И обратно присваиваешь. Профит.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как-то спрашивал такой вопрос: убрать повторы строк из txt
Имеется программа, которая открывает файл Settingsini, расшифровывает содержимое, заносит в таблицу данные, и зашифровывает файл обратно