ParticleSystem doesn't play

Hi,
After I update to Unity 5.3.1f1 from 5.2.3f1 my particle systems don’t play:
they play in Editor Simulation Mode, and they play in game if I use Play On Awake.

In my script I use next code, initialization:

_collisionParticles = transform.parent.FindChild("PlayerCollisionParticles").GetComponent<ParticleSystem>();

To play I use this code:

_collisionParticles.Play();

And to stop:

_collisionParticles.Stop();

Also, while I log _collisionParticles.isPlaying before and after I notice, after Play() it logs true, but after Stop() it remains true - and in both states I don’t see any emission.

I made a test (zip in attach): I create new project in Unity 5.3, create default particle system and try to Play it via script - nothing happened.

Could someone download project and try to reproduce problem? I thought, the problem in project upgrade from old format to new, but it looks like this is a permanent bug… I cannot google any similar problems with particles in 5.3, so it looks like only I have this problem.

2439661–167253–ParticleSystemTest.zip (520 KB)

I was able to reproduce the problem (Unity 5.3.1p1). The odd thing is, if you call particlePlayInvoke() from Start() directly (not using Invoke) particles start playing. I thought maybe it’s related to Invoke() and replaced it with a coroutine, but it has the same issue. So, my second thought would be it’s not related to Invoke, but more an issue with ParticleSystem itself.

As far as I know, they changed a lot of the particle system code in 5.3 and changes often come with new issues.

I’d submit the test project you have as bug-report, along with a nice how to reproduce list/description.

Thank you, I made a bug report: (Case 757461) ParticleSystem doesn’t play

3 Likes

Same issue here. A dirty workaround to change “sumulation space” to “world”. This will allow to play particle system from script and from editor.

2 Likes

Same here been having alot of issues with trying to manage my texture sheet particles. For me they seems to be stuck playing reported by debug.log, and I have to launch Stop() multiple times to make it stop. A work around was to add into method that plays the system a little simulation code.

public void PlayParticles(int i)
{
pSys*.Simulate(1);*
pSys*.Play();*
}
guh seems really dirty I know but it works :frowning:
using 5.3.1p1

Happening to me as well. I was able to fix it by disabling then re-enabling the gameobjects via script to re-start them. It’s probably a bug left over from this one:

I’ve reported the issue to the Unity tracker. In the future, everyone else should do that as well right away to get it noticed.

Hi,

I have the exact same issue.

I call play() and stop() and nothing happens, but if I set the particle system to play on awake it runs fine. This is very frustrating. I hope this issue is fixed soon.

Edit: Sometimes the particle system plays, but only sometimes.

Edit 2: IsAlive seems to not work either.

Make sure to report an official bug by making a demo in a fresh project and with the project opened, using the Help > Report a Bug… menu action.

I already made bug report (Case 757461 ParticleSystem doesn’t play), QA team say when they decide in which version they fix it they write to me back.

I found out something very interesting: the particle system plays correctly if you add an empty subemitter.

Which brings me to the following topic, because I tried to add a subemitter through code: you can not change the parameters of the partcle system at runtime.

For example, the EmissionModule struct is exposed as property. Because a struct getter returns a value and not a reference, C# does not allow you to change the parameters directly, only through getting, changing and setting again. However, there is no public setter…

UPDATE: it works even if you just enable the subemitter module, no need to add an empty subemitter.

I got an e-mail yesterday that stated:

Guess we can hope for an official fix soonish.

Yes it will make things run again, but with subemitter enabled, automatic culling is off. Which defeats the purpose of pooling the particle system since I use pooling to improve runtime performance. If I am going to do that might as well just instantiate on use and destroy afterwards. I cannot believe such a critical function broken and they did not instant hot fix this thing.

Not fixed in 5.3.1p2, disappoint.

1 Like

Just to let you know that I posted a bug report about isPlaying() and isAlive() not working as it should. Got a reply that it was fixed in 5.4.

I got e-mail from Unity’s QA: “We have fixed this and problem should not appear in the upcoming patch release (5.3.2p1)”

I’m on 5.3.2p2 and i’m still having a ton of issues just getting particle systems to play. Why is this so difficult, they’ve been broken forever.

I wish I would have read this an hour ago - would have saved me a lot of sanity. Thanks a lot for the dirty fix. :slight_smile:

Yes, the dirty fix works. but I get a ton of errors now (that do not interupt play in editor tho)…

At Play()…

They’ll fix it eventually I hope. Didn’t run into those errors while testing myself. Are you confident it’s due to the particles?