21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity5.5でパーティクルのパラメーターをスクリプトから設定する方法

Last updated at Posted at 2016-12-04

Unity 5.5からパーティクルシステムの設計が大きく変わり、スクリプトから各パラメーターの設定を変更する方法も、以前とは少し変わりました。

以前までの方法
// パーティクルの速度を設定する
particleSystem.startSpeed = 1;

以前までは↑のような書き方で設定できましたが、これからは↓のように書きます。

新しい方法
// メインモジュールへのアクセサを取り出す
var ma = particleSystem.main;
// アクセサに対してパラメーターの設定を行う
ma.startSpeed = 1;
// 範囲ランダムやカーブを設定するにはMinMaxCurveを使う
ma.startSpeed = new ParticleSystem.MinMaxCurve(1, 2);

MainModule型はstructで、paritcleSystem.mainは値返し(コピーを返している)なので、これでは値を書き戻していないので一見ダメなように見えますが、これで設定が反映されます。むしろparitcleSystem.mainは読み取り専用プロパティなので、paritcleSystem.main = ma;とすることはできません。

また、structの値返しをしているので、paritcleSystem.main.startSpeed = 1;のような書き方も当然できません。これは同じくstructを返すtransform.positionなどと同じ制限ですが、transform.positionの場合は値を書き戻さないと反映されないので、そのあたりで混乱しないように気をつけましょう。

参考:
Unity - Scripting API: ParticleSystem.main

21
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?