Pookie
Pookie

Reputation: 1279

Trouble stopping particle emission in unity

I am trying to only allow the particle system to emit particles when something is visible. The particle system knows when to start if a Boolean named avail is true. The code I thought would work for this is the following:

     if (avail)
    {

        GetComponent<MeshRenderer>().enabled = true;
        GetComponent<ParticleSystem>().enableEmission = true;
        print("Mesh enabled");

    }

However, this failed. I also tried:

     if (avail)
    {

        GetComponent<MeshRenderer>().enabled = true;
        GetComponent<ParticleSystem>().emission.enabled = true;
        print("Mesh enabled");

    }

However, this too failed. On every site I have searched in, these two "solutions" came up but they don't work for me. the first example said "this method of doing this is obsolete" and the second example says I can't set "emission.enabled" to a variable because it is a getter not a setter. Any help with figuring this out is extremely appreciated.

Upvotes: 1

Views: 1686

Answers (1)

Basile Perrenoud
Basile Perrenoud

Reputation: 4112

I don't have unity opened right now, but I think that

GetComponent<ParticleSystem>().Stop();

is what you need. You can restart the system using

GetComponent<ParticleSystem>().Play();

Also, if you do this often, you should consider keeping your particle system in a class variable.

Upvotes: 2

Related Questions