Скриптинг стека постобработки Unity

Я пытаюсь имитировать эффект молнии в Unity, используя эффект bloom из его стека постобработки через скрипт (для изменения интенсивности), но почему-то я не могу на самом деле установить что угодно через скрипт.

PostProcessingProfile postProcProf;
postProcProf.bloom.settings.bloom.intensity = 
Mathf.Lerp(data[i].Strength, data[i + 1].Strength, data[i].TimeToReachNext);

Это мой код, но он говорит

Невозможно изменить возвращаемое значение BloomModel.Settings, потому что это не переменная.

Я не нашел руководства о том, как скрипт стек постобработки, только о том, как использовать его из редактора.


person agiro    schedule 19.07.2017    source источник


Ответы (1)


Согласно руководству Unity по модификации постобработки во время выполнения вы должны изменить копию значения settings, а затем перезаписать оригинал своей копией (не пытайтесь напрямую изменять элементы BloomModel.Settings):

PostProcessingProfile postProcProf;
var bloom = postProcProf.bloom.settings;
bloom.bloom.intensity = Mathf.Lerp(data[i].Strength, data[i + 1].Strength, data[i].TimeToReachNext);
postProcProf.bloom.settings = bloom;
person Serlite    schedule 19.07.2017
comment
С одним незначительным редактированием в вашей 3-й строке требовалось bloom.bloom.intensity, но это сработало отлично. Похоже, я недостаточно внимательно посмотрел, спасибо за вашу помощь. - person agiro; 20.07.2017
comment
@agiro Рад помочь! Ой, ха-ха, думаю, это мое наказание за использование того же имени переменной, что и член, к которому я обращался! - person Serlite; 20.07.2017