Search Issue Tracker

Fixed

Fixed in 2022.3.61f1, 6000.0.44f1, 6000.1.0b12, 6000.2.0a8

Votes

0

Found in

2022.3.58f1

6000.0.41f1

6000.1.0b9

6000.2.0a6

Issue ID

UUM-99113

Regression

Yes

Particle System doesn't always play when ParticleSystem.Play() is called

-

Reproduction steps:
1. Open the attached “IN-94788 Particle Emission Bug - FAV.zip“ project (link in the internal comments)
2. Open the “Particles” scene
3. Go to the Game view (make sure the “Particle System” GameObject is not selected in the Hierarchy)
4. Enter Play mode
5. Observe the Game view

Expected result: The “Particle System” GameObject is emitting particles
Actual result: No particles are being emitted

Reproducible with: 2022.1.0a13, 2022.1.24f1, 2022.2.21f1, 2022.3.58f1, 6000.0.41f1, 6000.1.0b9, 6000.2.0a6
Not reproducible with: 2021.3.49f1, 2022.1.0a12

Reproduced on: Windows 11 Pro (23H2)
Not reproduced on: No other environment tested

Notes:
- The issue reproduces randomly about 50-70% of the time
- The issue reproduces the most often when entering Play mode while already being in the Game view, and the “Particle System” GameObject() is not selected in the Hierarchy
- Even though the Particle System is not emitting particles, ParticleSystem.isPlaying and ParticleSystem.isEmitting are returning “True”
- If the user moves from the Game view to the Scene view during Play mode, the “Particle System” starts emitting particles (sometimes, selecting any of the GameObjects in the Hierarchy or any of the assets in the Project window can also trigger particle emission)
- Reproducible in a new project
- Reproducible in the Player (reproduced 100% of the time during testing)

  1. Resolution Note:

    When calling Play() from script, there can be 2 outcomes, as the documentation describes:
    - If the system is paused or stopped, the system will start playing
    - If the system is already playing, the system will do nothing
    The issue described by the user occurs when Play() is invoked continuosly, before the particle system had time to spawn a particle.
    In that case, the system consider that it is not playing, and restarts all the time counters again. If this happens every frame, the system will never show anything.
    However, if the system was able to spawn a particle (longer delta time for a frame, or higher emission rate) the particle system will continue to play normally afterwards.
    Please notice that this issue is more likely to appear with smaller Emission > Rate Over Time values, that require longer time to spawn the first particle.
    To avoid running into this situation, please make sure to invoke Play() only when we want to start, or invoke Stop() before Play() if we want to restart.
    Duplicate of https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-46393

  2. Resolution Note (fix version 6000.2.0a8):

    Added a line to the API documentation of ParticleSystem.Play(), to clarify this behavior:

    **Note**: If you invoke this function again before the particle system has had time to spawn a particle, the particle system restarts its internal counters. This means that if you invoke this function continuously, a particle system with a low emission rate will never start to play.

  3. Resolution Note (fix version 6000.1.0b12):

    Added a line to the API documentation of ParticleSystem.Play(), to clarify this behavior:

    **Note**: If you invoke this function again before the particle system has had time to spawn a particle, the particle system restarts its internal counters. This means that if you invoke this function continuously, a particle system with a low emission rate will never start to play.

  4. Resolution Note (fix version 6000.0.44f1):

    Added a line to the API documentation of ParticleSystem.Play(), to clarify this behavior:

    **Note**: If you invoke this function again before the particle system has had time to spawn a particle, the particle system restarts its internal counters. This means that if you invoke this function continuously, a particle system with a low emission rate will never start to play.

  5. Resolution Note (fix version 2022.3.61f1):

    Added a line to the API documentation of ParticleSystem.Play(), to clarify this behavior:

    **Note**: If you invoke this function again before the particle system has had time to spawn a particle, the particle system restarts its internal counters. This means that if you invoke this function continuously, a particle system with a low emission rate will never start to play.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.