Невозможно изменить цвет материала импортированной сетки по коду

Я недавно импортировал в свою игру файлы .blend и .fbx и хотел бы изменить их цвет в игре. Чтобы раскрасить их, я использую диффузные шейдеры и пробовал эту команду:

gameObject.GetComponent<MeshRenderer>().material.color = Color.red;

а также эту команду:

gameObject.GetComponent<MeshRenderer>().material.SetColor("_Color", Color.red);

По какой-то причине оба они отлично работают с предварительно сгенерированными кубами Unity, но не с моими моделями, даже если у них есть компонент рендеринга сетки. Какие-либо предложения?


person Ashwin Kudva    schedule 03.04.2016    source источник
comment
Вы уверены, что сетки находятся на объекте, а не на его дочерних элементах? Кроме того, базовые материалы по умолчанию белые?   -  person Nuds    schedule 03.04.2016
comment
Не могли бы вы приложить снимок экрана со свойствами меша, которым вы пытаетесь манипулировать? (В частности, разверните все части компонента рендеринга.) Я думаю, что это поможет сузить проблему.   -  person Serlite    schedule 04.04.2016


Ответы (1)


Может быть несколько причин, по которым ваш код не работает. Я бы порекомендовал изменить цвет вашего объекта в редакторе, если он работает - ваши объекты в порядке.

  • _Color - это просто метка, которая обычно обозначает основной цвет. Откройте шейдер и проверьте, существует ли метка _Color. Пожалуйста, проверьте это в документации по единству http://docs.unity3d.com/ScriptReference/Material.SetColor.html
  • возможно, вы меняете _Color родительского объекта, но просматриваемый вами материал принадлежит дочернему объекту.
person Ilona Hari    schedule 22.04.2016