[Решено] Color. Никак не изменить.

Программирование на Юнити.

[Решено] Color. Никак не изменить.

Сообщение fallenart 13 мар 2011, 11:42

Объекты:
Изображение
Скрипт висит на obj_1. Пытаюсь из него добраться до Color объекта Obj_2. Нужно поменять Main Color у шейдера Vertex Color. Делаю вот так:
Синтаксис:
Используется csharp
Renderer rend = GetComponentsInChildren<Renderer>()[0];
rend.materials[0].color = new Color(1.0f,1.0f,1.0f,0.0f);
и так:
Renderer rend = GetComponentsInChildren<Renderer>()[0];
rend.material.color = new Color(1.0f,1.0f,1.0f,0.0f);

Ошибок нет в обоих случаях. Но скрипт не работает...
Последний раз редактировалось fallenart 13 мар 2011, 14:56, всего редактировалось 1 раз.
fallenart
UNIт
 
Сообщения: 81
Зарегистрирован: 19 дек 2010, 23:52

Re: Color. Никак не изменить.

Сообщение Nolex 13 мар 2011, 12:26

Может цвет не тот вбиваеш, попробуй написать для теста:

rend.material.color = Color.red;

И зачем тут в конце ставить GetComponentsInChildren<Renderer>()[0]

[0]

?
Разработка игр в студии Brinemedia .
Аватара пользователя
Nolex
UNIверсал
 
Сообщения: 483
Зарегистрирован: 17 окт 2010, 12:26
Откуда: Украина
Skype: exlumen
  • Сайт
  • ICQ

Re: Color. Ни как не изменить.

Сообщение fallenart 13 мар 2011, 12:33

И зачем тут в конце ставить

Ну, можно было так сделать:
Синтаксис:
Используется csharp
Renderer[] rend = GetComponentsInChildren<Renderer>();
rend[0].materials[0].color = new Color(1.0f,1.0f,1.0f,0.0f);

GetComponentsInChildren дает список. У меня объект только один, индекс известен...

На самом деле к иерархии проблема не имеет ни какого отношения. Если скрипт накинуть на объект, цвет котого нужно поменять, и сделать:
Синтаксис:
Используется csharp
renderer.material.color = new Color(1.0f,1.0f,1.0f,0.0f);

исход тот же. Цвет не меняется. Проблема именно с доступом к цвету.
fallenart
UNIт
 
Сообщения: 81
Зарегистрирован: 19 дек 2010, 23:52

Re: Color. Никак не изменить.

Сообщение Nolex 13 мар 2011, 14:37

fallenart писал(а):
И зачем тут в конце ставить

Ну, можно было так сделать:
Синтаксис:
Используется csharp
Renderer[] rend = GetComponentsInChildren<Renderer>();
rend[0].materials[0].color = new Color(1.0f,1.0f,1.0f,0.0f);

GetComponentsInChildren дает список. У меня объект только один, индекс известен...

На самом деле к иерархии проблема не имеет ни какого отношения. Если скрипт накинуть на объект, цвет котого нужно поменять, и сделать:
Синтаксис:
Используется csharp
renderer.material.color = new Color(1.0f,1.0f,1.0f,0.0f);

исход тот же. Цвет не меняется. Проблема именно с доступом к цвету.


Попробуй не Renderer, a MeshRenderer.
Разработка игр в студии Brinemedia .
Аватара пользователя
Nolex
UNIверсал
 
Сообщения: 483
Зарегистрирован: 17 окт 2010, 12:26
Откуда: Украина
Skype: exlumen
  • Сайт
  • ICQ

Re: Color. Никак не изменить.

Сообщение fallenart 13 мар 2011, 14:54

Попробуй не Renderer, a MeshRenderer

\m/ Заработало. Спасибо!
fallenart
UNIт
 
Сообщения: 81
Зарегистрирован: 19 дек 2010, 23:52


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10


cron