Как установить «startColor» ParticleSystem в Unity 2017 в C #? - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь изменить поле «startColor» ParticleSystem в Unity 2017.

Я пытаюсь написать код двумя разными способами на C #.

Первый способ:

ParticleSystem.MainModule settings =
GetComponent<ParticleSystem>().main;

settings.startColor = new Color(9, 251, 122, 128);

и второй способ:

GetComponent<ParticleSystem>().startColor  =  new Color(9, 251, 122, 128);

Но в обоих случаях, когда я запускаю код, для startColor автоматически устанавливается значение WHITE, то есть (255, 255, 255, 128).

Похоже, что приведенный выше код работал в старых версиях Unity.Но в Unity 2017 не удается правильно изменить «startColor».

Пожалуйста, дайте мне знать, как это исправить.Спасибо.

PS:

Вот ПОЛНЫЙ оригинальный вопрос и ответ (с правильным синтаксисом C #) внутри форума Unity: https://answers.unity.com/questions/604246/how-to-change-the-color-of-particle-system.html

Обратите внимание, что кажется, что решениеможет хорошо работать для более старых версий Unity и не работает с Unity 2017 (если я не ошибаюсь).

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Кажется, что код выше работал для более старых версий Unity.Но в Unity 2017 он не может правильно изменить «startColor».

Я даже удивлен, что он вообще работал в предыдущей версии.Обратите внимание, что у вас есть неопределенное поведение.

Цвет принимает значение от 0 до 1, а Color32 принимает диапазон значений от 0 до 255.

Вы все еще можетеиспользуйте диапазон 0 до 255 с цветом, но делите его на 255

settings.startColor = new Color(9 / 255f, 251 / 255f, 122 / 255f, 128 / 255f);

Или используйте create Color из Color32

Color color = new Color32(9, 251, 122, 128);
settings.startColor = color;
0 голосов
/ 31 мая 2018

Это вполне нормально, учитывая, что Цвет использует цвета с плавающей запятой, принимая значения в диапазоне от 0 до 1.

Поскольку ваши значения округлены, все они заканчиваются на 1, что в вашемрегистр приводит к чистому белому.

Если вы хотите использовать цвета 0-255, вы должны использовать Color32 вместо.

...