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;

在这段代码中,我只是尝试通过每次重新制作一个新的并重置其 ColorKeys 和 AlphaKeys 来更改渐变。

我确定渐变设置正确,但不知何故粒子系统没有更新。

我认为你的最后两行是问题所在。不应该

col.color = gradient;

而不是像 doc?