首页 文章

无法在更新后获得新的统一粒子系统代码

提问于
浏览
0

我曾经有过以下粒子系统 .

// In the inspector I drag in the leaf particle system.
public ParticleSystem LeafStormParticleSystem;

private IEnumerator activate(float ActivateFor) {
    //Change number of particles to 150
    LeafStormParticleSystem.maxParticles = 150;

    //  LeafStormParticleSystem.
    var newEmission = LeafStormParticleSystem.emission;
    var rate = newEmission.rate; 
    rate.constantMin = 20;
    rate.constantMax = 21;
    newEmission.rate = rate;

现在你可以说,这很简单,增加了粒子的数量 . 现在,这曾经起作用,可能不会因为我一直在阅读的新粒子系统 .

然而,在这个新的粒子系统上,我有一个问题和问题,让它工作 .

Issue

如果我错了,请纠正我,但粒子系统的定义如下

void Start()
{
    ParticleSystem ps = GetComponent<ParticleSystem>();
    var main = ps.main;

    main.startDelay = 5.0f;
    main.startLifetime = 2.0f;
}

现在,如果我有3个粒子系统,我该如何指定我指的是哪一个?既然我不能将它定义为公共,并在编辑器中将粒子系统拖到它上面?

Issue B

现在我试着遵循团结在他们的论坛中所说的并做了以下事情

ParticleSystem ps = GetComponent<ParticleSystem>();
var main = ps.main;

main.maxParticles = 150;
//  LeafStormParticleSystem.maxParticles = 150;

do not create your own module instances, get them from a ParticleSystem instance UnityEngine.ParticleSystem+MainModule.set_maxParticle

任何有关问题A和B的帮助将不胜感激 .

谢谢

enter image description here

1 回答

  • 0

    Issue A

    一次只能将一个ParticleSystem组件附加到任何一个GameObject . 因此,子粒子系统也必须附加到单独的游戏对象(通常是持有第一个粒子系统的GameObject的子对象),它们可以直接放到公共字段上 .

    public ParticleSystem LeafStormParticleSystem;
    
    void Start ()
    {        
        if (LeafStormParticleSystem != null)
        {
            var main = LeafStormParticleSystem.main;
            main.maxParticles = 150;
        }
    }
    

    Issue B

    您的代码看起来很好,但缺少错误消息的关键部分; NullReferenceException 告诉您代码中的引用等于 NULL . 在您的情况下,该引用将是用于存储ParticleSystem引用的 ps 变量,这可能是因为未将此脚本附加到持有ParticleSystem的GameObject,或者根本没有附加任何ParticleSystem . 在任何一种情况下,请确保脚本和ParticleSystem都附加到同一个GameObject并检查您的引用,如此;

    void Start ()
    {
        ParticleSystem ps = GetComponent<ParticleSystem>();
    
        if (ps != null)
        {
            var main = ps.main;
            main.maxParticles = 150;
        }
    }
    

相关问题