Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away