Unity中的实例化和粒子

时间:2017-11-07 08:38:54

标签: c# unity3d unity5

我有一个问题。目前,我正在使用Unity中的粒子系统。我将它们实例化到场景中然后编辑一些参数(基本上只是颜色)。问题是我在克隆上的变化我也改变了原来的预制件。你可以想象这不是我想要的。所以我的问题是有没有人知道如何在不编辑预制件的情况下做到这一点?

GameObject l = Instantiate((GameObject)(Resources.Load("MultiSpell/Electric/Lightning")));
        ParticleSystem ps = l.GetComponent<ParticleSystem>();

        Gradient eGrad = createGradLightning(spellType.spellColour);

        var psColor = ps.colorOverLifetime;
        psColor.enabled = true;
        psColor.color = eGrad;

        var psTrails = ps.trails;
        psTrails.colorOverLifetime = eGrad;



Gradient createGradLightning(Color col)
{
    Gradient grad = new Gradient();

    GradientColorKey col1 = new GradientColorKey();
    col1.color = col;
    col1.time = 0;

    GradientColorKey col2 = new GradientColorKey();
    col2.color = Color.black;
    col2.time = 0.9f;

    GradientAlphaKey alp1 = new GradientAlphaKey();
    alp1.time = 1;
    alp1.alpha = 0;

    GradientAlphaKey alp2 = new GradientAlphaKey();
    alp2.time = 0;
    alp2.alpha = 0f;

    grad.SetKeys(new GradientColorKey[2] { col1, col2 }, new GradientAlphaKey[2] {alp1, alp2});
    return grad;
}

1 个答案:

答案 0 :(得分:0)

编辑预制件而不是(或使用)实例的一些常见原因:

  1. 您可以直接引用连接到脚本的预制件 你的编辑(可能,如果你有另一个脚本!)
  2. 您的引用是Resource.Load而不是Instantiate(不是。{ 案例)
  3. 您正在直接编辑材料,而不是实例化的材料 版本(见(1)和(2))