我有一个问题。目前,我正在使用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;
}
答案 0 :(得分:0)
编辑预制件而不是(或使用)实例的一些常见原因:
Resource.Load
而不是Instantiate
(不是。{
案例)