下の画像の赤丸部分をプログラムから変更する感じです
この"Rate"を変更するとパーティクルの粒々量を増やしたり減らしたりできるわけですが
簡単にできそうと思いきやググってみると、意外や意外、日本語ドキュメントがなかなか出てきません
海外サイトでも、結構情報が少ないです
やり方自体は
「ParticleSystem.EmissionModule.rate」の値を変更すればいいだけなのですが
普通に代入する感じではなく、やり方がちょっと特殊なようです
やり方だけ先に書くと以下のようになります
---------------------------------------
ParticleSystem.EmissionModule EmObj = ParticleSystem.emission;
EmObj.rate = new ParticleSystem.MinMaxCurve(50); //←これでRateが50になる。11にしたい場合は「MinMaxCurve(11)」のようにする感じ
---------------------------------------
以上!!
…では流石に分かりづらいと思いますので下にサンプル置いときます
前準備としてUnityのエディッター上で
①"Cube"を作成
②"Cube"を右クリック、表示されるメニューから"Particle System"を選ぶ
(Cubeの子オブジェクトとしてParticle Systemがくっついてるはずです)
③先程作成した"Particle System"の名前を"Particle1"に変更(サンプルコードを分かりやすくするため)
④"Particle1"のRotationのXを「0」から「-90」に変更(変化を見やすくするため。この作業でパーティクルが手前に向かってではなく真上に向かって飛び始める)
⑤適当な場所に"Test.cs"を作成し"Cube"にアタッチ
⑥"Test.cs"をコードエディッタで開き以下のサンプルコードと入れ替える(コピー&ペースト)
※赤色部分が特に重要な箇所
見た目が長くなってしまいますがなるべく省略しないように書いています。
---------------------------------------
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
ParticleSystem.EmissionModule mEmObj;
void Start () {
//↓Cube の 子オブジェクトである"Particle1"オブジェクトから ParticleSystemコンポーネントを取得
ParticleSystem ParticleObj = transform.FindChild("Particle1").GetComponent<ParticleSystem>();
//↓最終目的である rate にアクセスするために必要な emission を取得し格納
mEmObj = ParticleObj.emission;
}
private float mCount = 0; //←時間計測用
private bool mSwitch = true; //←切り替えスイッチ用
void Update() {
mCount = mCount + Time.deltaTime; //←時間計測中
if (mCount >= 5.0f) { //← 5秒経過する度に if 成立
mCount = 0; // 時間計測用変数を初期化
if (mSwitch == true) {
//↓Rate を 100 に変更
mEmObj.rate = new ParticleSystem.MinMaxCurve(100);
} else {
//↓Rate を 10 に変更
mEmObj.rate = new ParticleSystem.MinMaxCurve(10);
}
//↓ true が false に、false が true に交互に入れ替わり続ける
mSwitch = !mSwitch;
}
}
}
---------------------------------------
実行すると5秒間隔でパーティクルが100に増えたり10に減ったりを繰り返し続けます
-------------------------------
●実験環境
・Unity 5.3.5f1 Personal (64bit)
・Windows 10 Pro (64bit)
・Visual Studio Community 2015 Version 14.0.25422.01 Update 3 ※コードエディッター
-------------------------------