【问题标题】:How to set "startColor" of ParticleSystem in Unity 2017 in C#?如何在 C# 中的 Unity 2017 中设置 ParticleSystem 的“startColor”?
【发布时间】:2018-11-10 11:06:16
【问题描述】:

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

我尝试在 C# 中以 2 种不同的方式编写代码。

第一种方式是:

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(除非我弄错了)。

【问题讨论】:

  • 仔细检查它没有在检查器的任何地方设置,因为它会覆盖你的脚本!
  • 你在哪里执行这段代码?在开始?苏醒?一些功能?
  • 我把这段代码放在了 Update() 方法中。我可以看到 Update 方法被频繁调用,因为我将 Debug.Log() 放在该方法中。因此,我确信代码的调用频率与 Update() 方法一样频繁。 (原因,我把代码放在 Update() 里面是为了以后,我想每 2 或 3 秒更改一次颜色。)
  • @TJ Wolschon:在粒子系统的检查器中,最初我将 startColor 设置为 GREEN。现在,如果我不调用我的脚本,那么 startColor 将保持绿色,这是正确的。但是,一旦我调用我的脚本,startColor 就会变为 WHITE,这是错误的,因为我没有在上面显示的脚本中将 startColor 设置为 WHITE。
  • "如何在 StackOverFlow 的 "" 中键入 "ParticleSystem"?" 将代码放在两个 ` 或花括号按钮之间在屏幕上自行插入。见this帖子

标签: c# unity3d colors particle-system


【解决方案1】:

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

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

颜色采用 01 值,Color32 采用 0255 值范围。

您仍然可以将 0255 范围与 Color 一起使用,但除以 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;

【讨论】:

  • 这是正确的答案。我应该改用 Color32。非常感谢。 :-)
【解决方案2】:

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

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

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

【讨论】:

  • 这是正确的答案。我应该改用 Color32。非常感谢。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 2019-01-30
相关资源
最近更新 更多