我正在制作砖破坏者游戏,我想要显示与被球击中的砖相同颜色的粒子。 这是我的代码:
GameObject smokePuff = Instantiate(smoke, transform.position, Quaternion.identity) as GameObject;
ParticleSystem ps = smokePuff.GetComponent<ParticleSystem>();
ParticleSystem.MainModule psmain = ps.main;
psmain.startColor = gameObject.GetComponent<SpriteRenderer> ().color;
这不起作用,粒子颜色显示为粉红色。如何解决?
我正在使用Unity 5.6。
答案 0 :(得分:1)
这是Unity某些特定版本的错误。它应该在Unity 2017.2中修复。会发生什么变化,当您更改ParticleSystem
颜色时,它会丢失其材质参考。
您可以将Unity更新为最新版本,也可以在设置颜色后将该材料参考或新材料手动附加到ParticleSystem
。
public GameObject smoke;
void Start()
{
GameObject smokePuff = Instantiate(smoke, transform.position, Quaternion.identity) as GameObject;
ParticleSystem ps = smokePuff.GetComponent<ParticleSystem>();
ParticleSystem.MainModule psmain = ps.main;
psmain.startColor = gameObject.GetComponent<SpriteRenderer>().color;
//Assign that material to the particle renderer
ps.GetComponent<Renderer>().material = createParticleMaterial();
}
Material createParticleMaterial()
{
//Create Particle Shader
Shader particleShder = Shader.Find("Particles/Alpha Blended Premultiply");
//Create new Particle Material
Material particleMat = new Material(particleShder);
Texture particleTexture = null;
//Find the default "Default-Particle" Texture
foreach (Texture pText in Resources.FindObjectsOfTypeAll<Texture>())
if (pText.name == "Default-Particle")
particleTexture = pText;
//Add the particle "Default-Particle" Texture to the material
particleMat.mainTexture = particleTexture;
return particleMat;
}
修改强>
有关创建粒子系统和粉红色粒子问题的另外两件事:
<强> 1 即可。如果您从组件 ---&gt;创建粒子系统效果 ---&gt; 粒子系统菜单,Unity将不将材质附加到粒子系统,因此它将呈粉红色。您必须使用上面的代码来创建新材料或从编辑器手动执行。如果你不这样做,你会得到粉红色的ParticleSystem。
你的问题是这个或我上面描述的参考错误。
<强> 2 即可。如果您从 GameObject ---&gt;创建粒子系统效果 ---&gt; 粒子系统菜单,Unity将创建新的GameObject,附加粒子系统和材料。你不应该有粉红色粒子问题,除非是我在谈到颜色被修改时丢失材料参考的粒子的错误。