如何在 C# 中设置 Unity 2017 中的 ParticleSystem "startColor"?

How to set "startColor" of ParticleSystem in Unity 2017 in C#?

我正在尝试更改 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 自动设置为白色,即 (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(除非我弄错了)。

这很正常,考虑到 Color 使用浮点颜色,取值范围为 0 到 1。

由于您的值四舍五入,它们最终都为 1,在您的情况下会导致纯白色。

如果您希望使用 0-255 范围内的颜色,您应该使用 Color32

It seems that the code above used to work in older versions of Unity. But, in Unity 2017, it fails to change "startColor" properly.

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

颜色取 01 值,Color320255 值范围。

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

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

或使用从 Color32

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