Смена материала по нажатию кнопки

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 17:40

Идет бесконечный поток создания объектов. Не могу реализовать изменение цвета по нажатию кнопки. В вижуал студио при дебагинге когда ставлю брейкпоинт на "void Start" идет перемещение до конца блока "Start", а дальше не переходит.



Синтаксис:
Используется csharp
public class Script_1 : MonoBehaviour
{

    public Material[] material;
    Renderer rend;

    // Use this for initialization
    void Start()
    {
        rend = GetComponent<Renderer>();
        rend.enabled = true;
        rend.sharedMaterial = material[0];

    }

   void Update()
    {
       
       if (Input.GetKey(KeyCode.E))
        {
            rend.sharedMaterial = material[1];
        }

   if (Input.GetKey(KeyCode.R))
        {
            rend.sharedMaterial = material[2];
      }
}
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 17:55

В вижуал студио при дебагинге когда ставлю брейкпоинт на "void Start" идет перемещение до конца блока "Start", а дальше не переходит.

Так а дальше то и некуда))
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 18:01

А почему Update не работает?
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 18:18

Почему не работает? просто ты на него брикпоинт не поставил вот и всё.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 18:33

У меня при запуске игры нет никакой реакции на нажатие кнопок
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 18:39

Не стоит быть столь категоричным, сначала проверь дебагом:
Синтаксис:
Используется csharp
void Update()
{
    if (Input.GetKey(KeyCode.E))
    {
        rend.sharedMaterial = material[1];
        Debag.Log(1);
    }

    if (Input.GetKey(KeyCode.R))
    {
        rend.sharedMaterial = material[2];
        Debag.Log(2);
    }
}
 


p.s. кстати зачем тебе именно rend.sharedMaterial если ты просто хочешь объекту материал изменить, то достаточно обычно простого rend.material
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 18:50

IndexOutOfRangeExeption : Array index is out of range.
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 18:52

В инспекторе тебе нужно задать количество элементов массива и затолкать в ячейки нужные материалы.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 18:55

p.s. кстати зачем тебе именно rend.sharedMaterial если ты просто хочешь объекту материал изменить, то достаточно обычно простого rend.material


До этого прописывал такой код
gameObject.GetComponent<SpriteRenderer>().material.color = Color.red;
но у меня менялись все объекты. Мне необходимо чтобы каждый вновь создаваемый объект менялся и сохранял свой цвет. Здсеь на форуме мне посоветовали делать через sharedMaterial
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 18:56

да, там уже задал количество элементов в массиве, даже больше прописал, толку - ноль
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 19:00

Вот тут https://docs.unity3d.com/ScriptReferenc ... erial.html написано о том, что этот материал влияет на все объекты, если тебе нужно изменить какой-то конкретный объект, то нужно брать material, ибо если ты поменяешь sharedMaterial, то такие же изменения произойдут с другими объектами, которые используют этот материал.
Вообще если тебе только цвет нужно менять, то совсем не обязательно создавать 3 материала, достаточно и одного:
Синтаксис:
Используется csharp
public class Script_1 : MonoBehaviour
{
    Renderer rend;

    void Start()
    {
        rend = GetComponent<Renderer>();
        rend.enabled = true;
        rend.material.color = Color.blue;
    }

    void Update()
    {      
        if (Input.GetKey(KeyCode.E))
        {
            rend.material.color = Color.green;
        }

        if (Input.GetKey(KeyCode.R))
        {
            rend.material.color = Color.red;
        }
    }
}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 19:22

По твоему скрипту так же меняются все объекты при нажатии.
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 19:24

Ну так если скрипт висит на всех этих объектах, то естественно оно сработает на всех ><
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Смена материала по нажатию кнопки

Сообщение Woody1000 13 июл 2018, 19:39

Похже рогом уперся в эти материалы, а нужно то мне всего лишь создание объектов с рандомным цветом. Попробую засунуть массив объектов с рандомом в Instantiate. И создам еще префабы объектов
Woody1000
UNец
 
Сообщения: 19
Зарегистрирован: 21 май 2017, 19:59

Re: Смена материала по нажатию кнопки

Сообщение 1max1 13 июл 2018, 19:47

Мне кажется ты забиваешь гвозди микроскопом. Нужен рандомный цвет? Для этого есть класс Random:
Синтаксис:
Используется csharp
void Start ()
{
    GetComponent<Renderer>().material.color = Random.ColorHSV();
}
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

След.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12