Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99

Как изменять параметры у материала скриптом в Unity

11.05.2020, 19:54. Показов 8736. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал шейдер с параметрами, который привязал к материалу. Соответственно скриптово нужно изменять параметры этого материала. Пробовал через добавление к скрипту этого материала, потом ссылаясь на данный параметр изменять его, но не работает. Помогите, в инете видел только про то, как менять цвета у материала
Привел скриншот, на его примере нужно изменять параметр Blur
Миниатюры
Как изменять параметры у материала скриптом в Unity  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2020, 19:54
Ответы с готовыми решениями:

Unity как изменять начение голода
имеется скрипт голода и префаба бургера. нужно чтобы при нажатии на бургер который размещен на сцене добавлялось +25 к голоду ...

Как выводить и изменять параметры.
Устройство - блок управления станком. Требуется выводить\изменять параметры работы станка. Исходим из того, что программа разделена на...

Как изменять параметры виджетов?
Такая проблема, допустим мне нужно, чтобы при запуске приложения происходила какая-нибудь анимация. Так вот, если я вызову процедуру...

10
1 / 1 / 0
Регистрация: 22.01.2020
Сообщений: 33
11.05.2020, 20:45
C#
1
2
3
4
public Material myMat;
public float value;
...
myMat.SetFloat("Название параметра", value);
0
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99
12.05.2020, 12:25  [ТС]
Player_Zhero, я это уже пробовал.
C#
1
2
        float blTime = Mathf.Lerp(0, 4, 0.2f * Time.deltaTime);
        blurMat.SetFloat("Blur", blTime);
Но ничего так и не изменяется. Напомню, что это материал, к которому подключен шейдер.
0
 Аватар для squakoon
68 / 48 / 20
Регистрация: 09.10.2013
Сообщений: 156
12.05.2020, 12:30
AlexKeys, уверены, что Blur в вашем случае без нижнего подчеркивания нужно писать? Уверены, что вообще к нужному вам инстансу материала обращаетесь?
0
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99
12.05.2020, 14:28  [ТС]
squakoon, как видишь, в параметрах указан как просто Blue. Вообще я не совсем шарю в шейдерах, но тут поступал по аналогии с C#
Миниатюры
Как изменять параметры у материала скриптом в Unity  
0
 Аватар для squakoon
68 / 48 / 20
Регистрация: 09.10.2013
Сообщений: 156
12.05.2020, 15:04
AlexKeys, судя по вашему скриншоту, "Blur" — это лишь лейбл параметра _Size для отображения в Инспекторе.
Попробуйте следующую запись:
C#
1
blurMat.SetFloat("_Size", blTime);
0
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99
12.05.2020, 19:29  [ТС]
squakoon, Спасибо, помогло. Так то я уже пробовал _size вводить, но не работало. Оказалось, дело в blTime.

Добавлено через 23 минуты
squakoon, еще вопрос не по теме. Но то ли я тупой, то ли что то пропустил. В общем мне нужно плавно изменить параметр blur с 0 до 4 в течении 0.2 секунд. Соответственно написал следующий код:
C#
1
2
3
4
5
6
7
 if (blu)
        {
            float blTimeOn = Mathf.Lerp(0, 4, 0.2f * Time.deltaTime);
            blurMat.SetFloat("_Size", blTimeOn);
            float floatSize = blurMat.GetFloat("_Size");
            if (floatSize >=4) blu = false;
        }
Все это запихнул в update, но почему то не работает
0
 Аватар для squakoon
68 / 48 / 20
Регистрация: 09.10.2013
Сообщений: 156
12.05.2020, 20:07
Лучший ответ Сообщение было отмечено AlexKeys как решение

Решение

Попробуйте такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
if (blu)
{
    float normalizedTime = (Time.time - _startTime) / _transitionDuration;
    float transitionValue = Mathf.Lerp(_minTransitionValue, _maxTransitionValue, normalizedTime);
    blurMat.SetFloat("_Size", transitionValue);
            
    if (normalizedTime >= 1f)
    {
        blu = false;
    }
}
И где-то в скрипте добавьте это:
C#
1
2
3
4
private float _startTime;
private float _transitionDuration = 0.2f;
private float _minTransitionValue = 0f;
private float _maxTransitionValue = 4f;
Единственное условие, вам нужно непосредственно перед местом присваивания переменной blu значения true добавить еще и такое:
C#
1
2
3
4
if (blu == false)
{
    _startTime = Time.time;
}
1
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99
12.05.2020, 21:22  [ТС]
squakoon, все равно не работает. После нажатия на кнопку устанавливается значение 0.07180133 и больше ничего не происходит.
Цитата Сообщение от squakoon Посмотреть сообщение
Mathf.Lerp(_minTransitionValue, _maxTransitionValue, normalizedTime);
Разве normalizedTime не нужно умножать на deltaTime?
0
 Аватар для squakoon
68 / 48 / 20
Регистрация: 09.10.2013
Сообщений: 156
12.05.2020, 21:37
Цитата Сообщение от AlexKeys Посмотреть сообщение
Разве normalizedTime не нужно умножать на deltaTime?
Однозначно нет.

Цитата Сообщение от AlexKeys Посмотреть сообщение
все равно не работает
Тогда показывайте весь код целиком, в котором фигурирует переменная blu. Ну или можете упростить себе жизнь, научившись пользоваться отладчиком в вашей среде разработки.
0
4 / 3 / 1
Регистрация: 21.02.2018
Сообщений: 99
13.05.2020, 21:08  [ТС]
squakoon, Дружище, спасибо. Извини, один момент не учел из твоего кода и поэтому не работало. Можешь добавить меня в свои друзья, мало ли помощь понадобится. Обещаю не надоедать)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2020, 21:08
Помогаю со студенческими работами здесь

Как изменять CSS параметры при скроллинге чтоб блоки не пересекались?
Добрый день! Хотел это сделать на простом CSS. Но похоже без вариантов. Будем делать на JS. На сайте уже используется jQuery - думаю с...

Unity как ввести в скрипт префаб и изменять его там (добавлять новые файлы к нему или удалять старые)
При этом префаб НЕ должен быть размещен на сцене

Unity android подскажите со скриптом
Всем привет. Мне необходимо чтобы в игре под Android, при нажатии на кнопку, появоялся обьект на сцене. Как переходить на другую сцену...

Unity 3D. Разработать программу по обработке магниторазведочного материала
Подскажите пожалуйста. Мне надо разработать программу по обработке магниторазведочного материала. Т.е. сделать это в unity. Возможно ли...

Изменение Цвета Кнопки Скриптом в Unity
Приветствую ! Такой вопрос, нужно при наведении на кнопку изменять ее цвет, а когда курсор убирается, то цвет возвращается на дефолтный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru