ParticleSystem Multiplier values

I had assumed (based on the docs’ description) that the various “*Multiplier” properties under Particle System (e.g. “StartSpeedMultiplier”, “StartSizeMultiplier”, etc.) would have a default value of 1, and I could use them to easily scale the relevant value.

However, I’m finding that the default values on startup are the UI-set values, rather than 1.

Example:

  1. Create a particle system.
  2. Set the “Start Size” to 10. Leave “Start Speed” at its default of 5.
  3. Attach this script to the particleSystem GameObject:
using UnityEngine;
public class MultTest : MonoBehaviour {
    void Start () {
        Debug.Log("size: " + GetComponent<ParticleSystem>().main.startSizeMultiplier +
            "\nspeed: " + GetComponent<ParticleSystem>().main.startSpeedMultiplier);   
    }
}

When you Run, you’ll see that the two tested multiplier values are 10 and 5, the same as the property they’re meant to be scaling.

Maybe this is by design, but I can’t see a reason why, and it makes the multipliers useless to me. Am I missing something?

-Scott

2 Likes

Just stumbled upon this problem as well. The docs probably should be more clear about the case where no curves are used, but “constant” or “random between two constants”. In latter case, this “multiplier” simply overrides max random value, which is rather unobvious.

1 Like

Yeah, it’s a shame it doesn’t work as it should (or as the docs imply it should); I actually submitted it as a bug, but it was rejected: https://fogbugz.unity3d.com/default.asp?1192367_24ij9pq00vgu8f5d

So I wound up having to write a stupidly complex system to try and replace the “multiplier” functionality.

-Scott

2 Likes