Материалы Unity3D не отображаются, но отображаются правильно - PullRequest
0 голосов
/ 02 января 2019

Я пытаюсь динамически загрузить объект и раскрасить каждый подобъект в зависимости от его состояния, взятого из файла на чьем-либо компьютере.

Загрузка объекта выполнена успешно, и материал устанавливается, но эта раскраска не работает в сцене во время игры.Я делаю это так:

grandchild.GetComponent<Renderer>().material.EnableKeyword("_NORMALMAP");

grandchild.GetComponent<Renderer>().material.SetColor("_Color", Color.yellow);

При просмотре сцены этот цвет не виден (цвет объекта совпадает с его исходным цветом. Затем я решил попробовать изменить сам материал на цветнойвот так:

grandchild.GetComponent<Renderer>().material = (Material)Resources.Load("YellowMaterial", typeof(Material);

Это тоже не сработало, материал устанавливается (заход в редактор сцены и просмотр свойств объекта показывает правильный материал), но объект не меняет цвет и вместо этогосохраняет его по умолчанию. Однако, взяв материал в папке активов и вручную перетащив его на объект в редакторе сцены, работает . Я не уверен, что я делаю здесь неправильно, поэтому любая помощь будетс благодарностью!

Редактировать: Вот несколько фотографий того, о чем я говорю

Объект в инспекторе (После смены материала):

Объект на сцене:

Свойства материалов:

1 Ответ

0 голосов
/ 02 января 2019

GarrotJohnson и derHugo дали мне представление о том, в чем может быть проблема.Оказывается, у каждого из объектов, с которыми я работал, был дочерний объект (называемый по умолчанию «по умолчанию»), который имеет свой собственный рендерер сетки и материал по умолчанию.Получение этого дочернего объекта (GameObject.transform.GetChild (0)) и изменение этого материала работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...