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.
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.
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.
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 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.
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.
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.
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.