Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@lucifuges

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

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?