更改粒子系统材质Unity 3D脚本

问题描述 投票:1回答:1

我正在尝试为我的物体创造粒子发射,这实际上是棋类游戏中的棋子。我使用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");
    }

这是它的样子:

enter image description here

编辑:

代码更改:

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");
    }

我的材料的位置:enter image description here

检查员的材料:

enter image description here

附加到对象的脚本:

enter image description here

c# unity3d particle-system
1个回答
4
投票

问题是这一行: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图像。请记住拼写计数。

© www.soinside.com 2019 - 2024. All rights reserved.