private IEnumerator DoParticleBehaviour(ParticleSystem particle) { particle.transform.position = Random.insideUnitSphere * 5f; particle.Play(); yield return(new WaitForSeconds(particle.main.duration)); particle.Stop(true, ParticleSystemStopBehavior.StopEmitting); yield return(new WaitUntil(() => particle.particleCount == 0)); _pool.Return(particle); }
private IEnumerator Start() { List <PoolableParticle> particles = _pool.Request(10) as List <PoolableParticle>; foreach (PoolableParticle particle in particles) { particle.transform.position = Random.insideUnitSphere * 5f; particle.Play(); } yield return(new WaitForSeconds(5f)); _pool.Return(particles); }
private IEnumerator Start() { _factory = ScriptableObject.CreateInstance <ParticleFactorySO>(); _factory.Prefab = _prefab; _pool = ScriptableObject.CreateInstance <ParticlePoolSO>(); _pool.name = gameObject.name; _pool.Factory = _factory; _pool.InitialPoolSize = _initialPoolSize; List <PoolableParticle> particles = _pool.Request(10) as List <PoolableParticle>; foreach (PoolableParticle particle in particles) { particle.transform.position = Random.insideUnitSphere * 5f; particle.Play(); } yield return(new WaitForSecondsRealtime(5f)); _pool.Return(particles); }