So, I have a Shuriken particle that works fine when I clicked Simulate button during the edit time. However, when I try to play this particle using particleSystemComponent.Play() via a C# code, it does not emit any particle. Using a debug log, I found out that
particleSystemComponent.time is always at 0.
particleSystemComponent.particleCount is 0. (So, yeah, it did not emit any particle after Play() is called)
particleSystemComponent.isPlayed is true. (It is playing but the time is always at zero…why?)
Nevertheless, if I use particleSystemComponent.Emit(1); instead of particleSystemComponent.Play();, a single particle will be emitted and the time will start running until the particle ends and the time will stop again.
However, Emit(1) is not a proper way to spawn particle since it will not spawn a correct series of particle. Is there any solution to make the Play() method working?
Thank you for your suggestion.
Caused the Particle System to start running again but not emitting particles if for some reason. With … I mean that other code was executed and the functions where called in different updates!!
Almost a year old this post i know, but I had the same thing. I couldn’t work out why it wouldn’t emit, the only way i could make it work was just to have PlayOnStart ☑ checked, and the object inactive, then set active later (particleSystemObject.SetActive(true);) and it works fine:
Hope this helps, sorry for the years wait
Thank you, @oinkoinkflapflap. I had a particle system the wouldn't play from just particleSystem.Play(), so I set it to Play On Awake, turn it off in the scene, and just fire particleSystem.gameObject.SetActive(true); when I want to play the particle system.
Actually, I got a much better result using SetActive(false) and SetActive(true), too. You'll see that it's much faster in reaction and works fluently! ;)
I had the same problem. What was more confusing is that the particle system that wasn’t working was duplicated from one that WAS working. I logged .isPlaying before/after .Play().
it logged false.
it logged true.
Yet it wouldn’t render, no idea why. Anyway, i moved it’s place in the hierarchy, then moved it back again… suddenly it worked fine.
This answer may not help (at least for 3d games), but I had the same problem and thought that the Particle System was broken.
Then I realized that when creating a new Particle System, it was created on the z axis with -50. I moved it close to the camera and DONE. Being so far from the camera, I couldn’t see it.
@mandinga90 I had this same problem but when I used ps.Play() in Start it worked but not in Update(). Therefore I think that it is not a bug but a feature.
A recall of Play() restarts the cycle before the emissions have got out of the starting blocks. So the check it was playing before calling Play() worked for me.
I had the same problem after experimenting a lot I found-
Connecting the particle system first with the game object and then dragging into (serializefield) where you set the particleSystem makes it work perfectly fine.
its the real cause :D saved me a lot of headache :D thanks buddy :D
– jamius19It did not work for me... I had to do the GameObject setactive thing...
– P0lT10nI have been trying to figure this out for half a day. You sir are my hero.
– legionair4Second time this has happened to me in three months, should have learnt my lesson the first time around! Always check the animation is stopped first
– SpruceMooseGames6 years later, you saved me. Thank you so much!!!
– LoboBobo123