ParticleSystemのStartColorをScriptから変更する(Unity)

Unity

ParticleSystem.startColorは単純なカラークラスではなく、MinMaxGradientクラスのため設定がやや面倒。

var color = new ParticleSystem.MinMaxGradient();
color.mode = ParticleSystemGradientMode.Color;
color.color = new Color(skinColor.r, skinColor.g, skinColor.b, 1);

var effect = SomeParticleSystem.main;
effect.startColor = color;

Colorのアルファを1でわざわざ指定しているのは、UnityEditor上でColorを作るとデフォルトでアルファ0が指定されるため。EditorでColor作って渡した時に見えなくなってしばらく悩んでしまった。

ParticleSystemGradientModeには
Color, Gradient, TwoColors, TwoGradients, RandomColor
の5つがある。
ModeによってColorの設定が変わるのでかなり面倒。

Unity 5.5 obsolete particle system code
Before 5.5 particle system variables could be accessed via P...

コメント