如何在C#中使用Unity 2017设置ParticleSystem的“startColor”?

时间:2018-05-31 12:22:44

标签: c# unity3d colors particle-system

我正在尝试更改Unity 2017中ParticleSystem的“startColor”字段。

我尝试在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:

以下是Unity论坛内的完整原创问题和答案(使用正确的C#语法):https://answers.unity.com/questions/604246/how-to-change-the-color-of-particle-system.html

请注意,似乎该解决方案可能适用于较旧版本的Unity,但不适用于Unity 2017(除非我弄错了)。

2 个答案:

答案 0 :(得分:4)

这是相当正常的,考虑到Color使用浮点颜色,取值范围从0到1.

当你的值被四舍五入时,它们都会以1结尾,在你的情况下会导致纯白色。

如果您希望使用0-255范围的颜色,则应使用Color32代替。

答案 1 :(得分:3)

  

上面的代码似乎适用于旧版本的Unity。   但是,在Unity 2017中,它无法正确更改“startColor”。

我甚至感到惊讶的是,它在以前的版本中完全有效。请注意,您拥有的是未定义的行为。

颜色从01值,Color320255值范围。

您仍然可以使用0255范围内的颜色,但除以255

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

或者使用Color

中的创建Color32
Color color = new Color32(9, 251, 122, 128);
settings.startColor = color;