How do you force a particle system to play all the time in the editor, not just when it is selected?

I need certain particle systems to play all the time while I am editing a scene, as opposed to playing only when they are selected. How should this be achieved?

It is now possible, as of version 4.3 at least.

Select a Particle System. Open the editor in its own floating window. Then in the upper right corner of that window, click the lock button. The window is locked on the particle system and the particle system will play whatever your selection becomes.

If you need to do that with multiple particle system, it’s a little bit tricky. Select another particle system you want to play. From the previous editor floating window, click the most upper right button (the little menu that all floating windows have, above the lock button) choose Add tab → Inspector.

Repeat to add other system to be played.

This is clearly a bug exploit because if you close the locked editor windows, the particle system will continue to play :slight_smile:

Sorry, but this isn't possible with the buildin particle system!

there is only one way to execute your own scripts in edit mode for your object. you should add ExecuteInEditMode attribute to your script, but unfortunately nothing can not be done for particle systems. i don't know they might be executed in edit mode when you have a script with this attribute attached or at least a script with this attribute that calls particle related stuff.

It’s not possible because the built-in script for particle systems is apperently written in a way where it will execute in edit mode if it’s selected. Since you cannot change how the script works, you cannot change that. You can also not ‘fake’ it being selected.

What you say about Update() only being called on selected objects is nonsense. Update is called, if I remember correctly, when focus is on the scene-view every frame and every event, and when focus is on an other window every repaint and every event.

@Aubrey Falconer
It’s maybe too late, but I had the same trouble and came up with a solution as below.

time = GUILayout.HorizontalSlider(time, 0, ps.startLifetime * ps.duration);
if(GUI.changed)
{
     ps.time = time; //set value and play straightly
     //ps.Simulate(time, true, true); //usual api
}

Withought select the ParticleSystem, multiplay is possible as well.

Will this could help another.