Unity 在运行时改变粒子系统中颜色随生命周期的渐变;
Unity change the color over life times gradient in particle system in runtime;
我正在开发一款需要在运行时控制 ParticleSystem
的游戏。
但问题是我无法在运行时和脚本中更改 ParticleSystem / ColorOverLifetime / Gradient
。这是我的代码,用于执行无效的操作:
ParticleSystem.ColorOverLifetimeModule col = backgroundParticleSystem.colorOverLifetime;
Gradient gradient = new Gradient();
GradientColorKey[] colorKeys = new GradientColorKey[2];
GradientAlphaKey[] alphaKeys = new GradientAlphaKey[1];
colorKeys[0].color = backgroundParticleStartColor;
colorKeys[0].time = 0f;
colorKeys[1].color = backgroundColor;
colorKeys[1].time = 1f;
alphaKeys[0].alpha = 1f;
alphaKeys[0].time = 0f;
gradient.SetKeys(colorKeys, alphaKeys);
ParticleSystem.MinMaxGradient gr = col.color;
gr.gradient = gradient;
在这段代码中,我只是尝试通过每次重新制作一个新的并重置其 ColorKey
s 和 AlphaKey
s 来更改渐变。
我确定渐变设置正确,但不知何故粒子系统没有更新。
我认为你的最后两行是问题所在。不应该
col.color = gradient;
而不是像 doc?
我正在开发一款需要在运行时控制 ParticleSystem
的游戏。
但问题是我无法在运行时和脚本中更改 ParticleSystem / ColorOverLifetime / Gradient
。这是我的代码,用于执行无效的操作:
ParticleSystem.ColorOverLifetimeModule col = backgroundParticleSystem.colorOverLifetime;
Gradient gradient = new Gradient();
GradientColorKey[] colorKeys = new GradientColorKey[2];
GradientAlphaKey[] alphaKeys = new GradientAlphaKey[1];
colorKeys[0].color = backgroundParticleStartColor;
colorKeys[0].time = 0f;
colorKeys[1].color = backgroundColor;
colorKeys[1].time = 1f;
alphaKeys[0].alpha = 1f;
alphaKeys[0].time = 0f;
gradient.SetKeys(colorKeys, alphaKeys);
ParticleSystem.MinMaxGradient gr = col.color;
gr.gradient = gradient;
在这段代码中,我只是尝试通过每次重新制作一个新的并重置其 ColorKey
s 和 AlphaKey
s 来更改渐变。
我确定渐变设置正确,但不知何故粒子系统没有更新。
我认为你的最后两行是问题所在。不应该
col.color = gradient;
而不是像 doc?