我正在尝试为我的物体创造粒子发射,这实际上是棋类游戏中的棋子。我使用Inspector为粒子系统改变了粒子材料并且它工作正常,但是,当我尝试用脚本更改它时,没有任何反应(粒子对于黑色棋子保持粉红色)。
我不确定脚本有什么问题,无论是材料问题的改变还是我需要设置材料的路径。如果有人建议解决方案,我会很高兴!
这是脚本:
public class BlackPawnParticleSystem : MonoBehaviour
{
private Material m_Material;
private ParticleSystemRenderer psr;
private void Start()
{
var ps = GetComponent<ParticleSystem>();
m_Material = GetComponent<Renderer>).material;
psr = GetComponent<ParticleSystemRenderer>);
psr.material = Resources.GetBuiltinResource<Material>("BlackBishop.mat");
}
这是它的样子:
编辑:
代码更改:
public class BlackPawnParticleSystem : MonoBehaviour
{
private Material m_Material;
private ParticleSystemRenderer psr;
private void Start()
{
var ps = GetComponent<ParticleSystem>();
m_Material = GetComponent<Renderer>().material;
psr = GetComponent<ParticleSystemRenderer>();
psr.material = Resources.Load<Material>("BlackBishop");
}
检查员的材料:
附加到对象的脚本:
问题是这一行:Resources.GetBuiltinResource<Material>("BlackBishop.mat")
它返回null。 Resources.GetBuiltinResource
函数用于加载Unity内置的资源,而不是由您创建的资源。例如,“Sprites-Default.mat”。没有名为“BlackBishop.mat”的内置材料,因此它返回null。
要加载您创建的材质,请使用Resources.Load
函数。
首先,创建一个名为“Resources”的文件夹,然后将“BlackBishop.mat”材料放在那里。你现在可以加载它如下:
Resources.Load<Material>("BlackBishop");
请注意我的名字中没有包含“.mat”。使用Resources.Load
函数时,不包括扩展名。如果你这样做,它将找不到它。
编辑:
但我的游戏场景仍然没有发生
请仔细:
1.我在原来的答案中说过,你必须创建一个名为“Resources”的文件夹,并且必须将“Black Bishop”材料放在该文件夹中。你没有这样做,它不应该工作。此文件夹的拼写必须正确,因此请直接从此答案中复制。同样,它应该被命名为“资源”。
你的材料被命名为“黑主教”而不是“BlackBishop”。看到空间。请在代码中修复此问题。这应该是Resources.Load<Material>("Black Bishop");
而不是Resources.Load<Material>("BlackBishop");
。
3.您的素材目前正在使用“标准”着色器。将其更改为“粒子着色器”。您可以通过选择“材质”并将着色器从“标准”更改为“粒子/ Alpha混合预乘”来实现。而已。你的问题现在应该解决了。
额外:
我注意到您正在使用文件夹来整理资源。你的“Black Bishop.mat”在Arcane Cyber中 - > Chess - > Materials - > Pieces - > Plastic。我建议你将“Materials”文件夹移动到上面#1中创建的“Resources”文件夹中。
现在,您的“Black Bishop.mat”应位于Assets - > Resources - > Materials - > Pieces - > Plastic中。
您现在可以将其加载为:
Resources.Load<Material>("Materials/Pieces/Plastic/Black Bishop");
如果仍有问题,请再次更新您的代码和新的Inspector图像。请记住拼写计数。