Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改粒子系统的开始颜色_C#_Unity3d_Unity5 - Fatal编程技术网

C# 如何更改粒子系统的开始颜色

C# 如何更改粒子系统的开始颜色,c#,unity3d,unity5,C#,Unity3d,Unity5,所以我只是试图通过脚本简单地更改粒子系统的开始颜色,但它不起作用 private ParticleSystem trailPartical; // The particle system public Color StartColor { var main = trailPartical.main; main.startColor = value; } 这根本不起作用,我也尝试过降价版本: trailParticle.startColor = valu

所以我只是试图通过脚本简单地更改粒子系统的开始颜色,但它不起作用

 private ParticleSystem trailPartical;   // The  particle system

 public Color StartColor
 {
      var main = trailPartical.main;
      main.startColor = value;
 }
这根本不起作用,我也尝试过降价版本:

 trailParticle.startColor = value;

您试图使用
StartColor
作为一个方法,从{}中的代码判断,即使您将它声明为一个变量

除此错误外,由于ParticleSystem中的某些更改,您需要访问组件的主模块:

ParticleSystem.MainModule main = GetComponent<ParticleSystem>().main;
main.startColor = Color.blue; // <- or whatever color you want to assign
ParticleSystem.main模块main=GetComponent().main;

main.startColor=Color.blue;// 我想我知道你想做什么。只需一个函数或属性即可简化颜色设置

您当前的代码将出现此错误:

需要获取或设置访问器

这是因为您没有实现set访问器

该属性应如下所示:

private ParticleSystem trailPartical; 

public Color StartColor
{
    set
    {
        var main = trailPartical.main;
        main.startColor = value;
    }
}
然后

void Start()
{
    trailPartical = GetComponent<ParticleSystem>();
    StartColor = Color.red;
}
void Start()
{
trailpartial=GetComponent();
StartColor=Color.red;
}

这应该行得通

如果有人想知道如何设置梯度:

ParticleSystem.MainModule psMain = GetComponent<ParticleSystem>().main;
psMain.startColor = new ParticleSystem.MinMaxGradient(Color.white, Color.red);
ParticleSystem.main模块psMain=GetComponent().main;
psMain.startColor=新粒子系统.MinMaxGradient(Color.white,Color.red);

这很管用,但你知道我为什么不能用Setter方法实现吗?我必须专门为此制作一个方法,将颜色作为参数。@BenjaFriend程序员提供的另一个答案向您展示了如何做到这一点。