title: Why can't I use ParticleSystem.Emit() outside of Start() method?
body: <p>I am trying to use <code>ParticleSystem.Emit()</code> to dynamically emit particles, and am unable to get <code>Emit()</code> to work outside of the <code>Start()</code> method.</p>
  
  <p>I am able to emit particles in the <code>Start()</code> method, either directly or with a separate method. When attempting to do the same in <code>Update()</code>, <code>LateUpdate()</code>, or <code>FixedUpdate()</code> it no longer works.</p>
  
  <p>There are no errors reported. I reported the number of particles in the update methods to make sure that the code there was actually running, and it reports however many particles I emit in the <code>Start()</code> method.</p>
  
  <p>When trying to emit particles in the update methods I have tried:</p>
  
  <ol>
  <li>Using <code>Emit()</code> directly in the update loop.</li>
  <li>Using a separate method called directly in the update loop.</li>
  <li>Using a separate method called using <code>Invoke()</code> in the update loop.</li>
  </ol>
  
  <p>I'm able to check and alter particle position in <code>Update()</code>, so I don't think I'm having some kind of scope problem.</p>
  
  <pre><code>using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  
  public class Test : MonoBehaviour
  {
      public ParticleSystem aSystem;
      private ParticleSystem.Particle[] aParticle;
  
      void Start()
      {
          aParticle = new ParticleSystem.Particle[aSystem.main.maxParticles];
  
          // Emit particle.
          DoEmit();
  
          Debug.Log("Particle Count: " + aSystem.particleCount);
      }
  
      void Update()
      {
          int numParticles = aSystem.GetParticles(aParticle);
          Debug.Log("Number of particles: " + numParticles);
          for (int i = 0; i &lt; numParticles; i++)
          {
              if (aParticle[i].position.z &gt; 1)
              {
                  aParticle[i].position = new Vector3(0f,0f,0f);
              }
              aParticle[i].velocity = new Vector3(0f, 0f, 1f);
          }
          aSystem.SetParticles(aParticle);
  
          // Emit particle.
          DoEmit();
      }
  
      void DoEmit()
      {
          // Configure render settings for particle.
          ParticleSystemRenderer aRenderer = aSystem.GetComponent&lt;ParticleSystemRenderer&gt;();
          aRenderer.renderMode = ParticleSystemRenderMode.Mesh;
          aRenderer.mesh = Resources.Load&lt;Mesh&gt;("vector");
  
          // Configure rest of settings and emit.
          var emitParams = new ParticleSystem.EmitParams();
          emitParams.startLifetime = 120;
          emitParams.position = new Vector3(0.0f, 0.0f, 0.0f);
          emitParams.velocity = new Vector3(0.0f, 0.0f, 0.0f);
          emitParams.startSize = 1;
          aSystem.Emit(emitParams, 1);
          aSystem.Play(); // Continue normal emissions
          Debug.Log("DoEmit() called!");
      }
  }
  </code></pre>
  
  <p>Expected result: A stream of particles moving in the +z direction.</p>
  
  <p>Actual result: One particle moving in the +z direction.</p>