答案 0 :(得分:3)
由于您创建粒子的方式,问题是缺少材料。
有两种方法来创建粒子系统:
1 。创建空GameObject,选择它然后转到 Component - > 效果并将粒子系统组件添加到该空GameObject中。这就是您创建当前粒子系统的方法。
如果使用方法#1 创建粒子系统,Unity将不将材质附加到粒子系统,从而使其变为粉红色。您必须创建一个新材质,将着色器更改为“Particles / Alpha Blended Premultiply”并使用“Default-Particle”作为纹理,使粒子看起来像默认材质。
您也可以使用粒子系统的“Default-Material”,但不能修改它。
2 。转到 GameObject --->创建粒子效果 ---> 粒子系统。
如果使用方法#2 创建粒子系统,Unity 将创建新的GameObject,附加粒子系统,也是一个材料。
始终通过转到 GameObject --->创建您的素材效果 ---> 粒子系统。它会为你节省一些时间。
简单的解决方案是删除当前的粒子GameObject,通过转到 GameObject --->创建新的粒子。 效果 ---> 粒子系统,而不是#1 。
中描述的方法如果您需要从代码创建粒子系统,那么按照#1 方法执行操作,但是通过脚本执行。以下是如何做到这一点:
void Start()
{
createParticleSys();
}
void createParticleSys()
{
//Create GameObject to hold the Particle System
GameObject psObj = new GameObject("Particle System");
//Add Particle System to it
ParticleSystem ps = psObj.AddComponent<ParticleSystem>();
//Assign 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 :(得分:-2)