private void InitParticle(ref Particle p) { p.lifeTime = GetRandomRangeValue(lifeTimeRange); p.acceleration = spawnAcceleration.GetRandomValue(random); p.startAcceleration = p.acceleration; p.scale = spawnScale.GetRandomValue(random); if (keepScaleRatio) { p.scale = scaleAspect.GetAspectRatio(p.scale); } p.position = spawnArea.GetRandomValue(random); p.position += transform.position; p.startPosition = p.position; p.color = particleColor.GetRandomValue(random); p.ClearModules(); for (int i = 0; i < perParticleModules.Count; i++) { ParticleModule module = perParticleModules[i].Clone(); module.InstanceInit(ref p); p.AddModule(module); } }