質問があります。現在、Unity内のパーティクルシステムで作業しています。私はシーンにそれらをインスタンス化し、いくつかのパラメータ(基本的に色だけ)を編集します。問題は、元のプレハブでも変更されたクローンについて私が変更したものです。あなたが想像することができるように、これは私が望むものではありません。だから私の質問は誰もがプレハブを編集せずにこれを行う方法を知っている?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;
}
私には右のように見えます。あなたはグラデーションを変更していませんか? – Mars
また、素材を変更するのではなく、sharedMaterialsを使いこなしていますか? – Mars
私はグラデーションを変更しています。これは、システムのクローンを作成して元のプレハブを変更せずに変更できるようにすることです。 –