Я создаю приложение Vuforia, которое использует виртуальные кнопки. Я использовал пример виртуальных кнопок, и я нашел эту часть по сценариюКак я могу изменить цвет материала в Unity?
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
Debug.Log("OnButtonPressed");
if (!IsValid())
{
return;
}
// Add the material corresponding to this virtual button
// to the active material list:
switch (vb.VirtualButtonName)
{
case "red":
mActiveMaterials.Add(m_TeapotMaterials[0]);
break;
case "blue":
mActiveMaterials.Add(m_TeapotMaterials[1]);
break;
case "yellow":
mActiveMaterials.Add(m_TeapotMaterials[2]);
break;
case "green":
mActiveMaterials.Add(m_TeapotMaterials[3]);
break;
}
// Apply the new material:
if (mActiveMaterials.Count > 0)
mTeapot.renderer.material = mActiveMaterials[mActiveMaterials.Count - 1];
}
Как видно, я просто необходимо добавить код в каждом конкретном случае «делать что-то». Ну, я хочу, чтобы изменить цвет объекта. Объект fbx экспортируется из Maya и имеет анимацию. Я хочу изменить цвет сетки внутри объекта. Объект называется «путь», внутри которого есть 3 ячейки (polySurface1_MeshPart0, ..1, ..2), и каждая сетка имеет разные материалы, соответствующие различным частям сетки, они являются материалами без текстуры, просто сплошной цвет с рассеиванием шейдеров. Мне нужно изменить цвет одного из этих материалов в конкретной сетке объекта :)
Любая помощь очень ценится.
Спасибо за ответ Xerosigma. Но у меня все еще есть проблемы, я использовал решение, которое вы мне дали, но это не сработало, я не знаю, что было не так, это просто не меняет цвет. Вот скриншот работы http://imageshack.com/a/img843/9475/if3b.png – Osuka42
@ Osuka42 попробуйте следующее внутри красного футляра: Материал [] mats = go.renderer.materials; для (int i = 0; i