表示テーマ
ParticleSystem Component
1つのEmitterとPhase列を持つParticleをCPUまたはGPUで実行します。
設定する手順
- シミュレーション先を選び、Emitter・Phase・ModuleとMaterialを設定して再生します。
- SceneViewまたはGameViewで結果を確認します。
- 編集中のSceneまたはPrefabを保存します。
項目の説明
| 項目 | C#名 | 型 | 操作 | 定義時の初期値 | 意味 |
|---|---|---|---|---|---|
| 再生速度 | PlaybackSpeed | float | 読取・変更 | 1.0f | 再生時間に掛ける倍率です。 |
| 有効 | Enabled | bool | 読取・変更 | true | このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。 |
| 開始時に再生 | PlayOnAwake | bool | 読取・変更 | true | 有効化・生成時に自動再生します。 |
| 非スケール時間 | UseUnscaledTime | bool | 読取・変更 | false | TimeScaleの影響を受けない時間で進めます。 |
| Seedを自動生成 | useAutoRandomSeed | bool | 読取・変更 | true | 再生のたびにSeedを変えます。無効なら指定Seedで再現します。 |
| randomSeed | randomSeed | uint | 読取・変更 | 0 | 固定再生に使う乱数Seedです。 |
| レイヤー | Layer | int | 読取・変更 | 0 | 描画するLayer番号です。 |
| 描画順 | Order | int | 読取・変更 | 0 | 同じLayer内の並び順です。 |
| 終了時の処理 | StopAction | ParticleSystemStopAction | 読取・変更 | ParticleSystemStopAction::None | 粒子がなくなった後のGameObject無効化・破棄などを指定します。 |
| シミュレーション空間 | SimulationSpace | ParticleSystemSimulationSpace | 読取・変更 | ParticleSystemSimulationSpace::PhaseSettings | 発生済み粒子をEmitterへ追従させるLocalか、Worldへ残すかを指定します。 |
| RenderingLayerMask | RenderingLayerMask | uint | 読取・変更 | 1u | このRendererを表示するCameraのCullingMaskと照合するbit集合です。 |
| 実行方式 | SimulationTarget | ParticleSimulationTarget | 読取・変更 | ParticleSimulationTarget::CPU | CPUまたはGPUを選びます。使用できるModuleと追加機能が変わります。 |
| 表示 | Visible | bool | 読取・変更 | true | 通常描画に表示するかを指定します。 |
Inspectorの設定と使い方
「Editor / C#」は両方から変更できる設定、「Editorのみ」は公開C# APIのない編集操作です。「Editor表示のみ」は計算結果や統計などの確認欄です。「C#のみ」は、このInspectorに編集欄のない操作です。
| 設定・操作 | 編集場所 | C#の入口 | 意味・使い方 |
|---|---|---|---|
| 開始時に再生・有効・表示 | Editor / C# | PlayOnAwake / Enabled / Visible | PlayOnAwakeはboolプロパティで、自動再生の設定です。system.PlayOnAwake = true; と書き、PlayOnAwake()とは呼びません。現在その場で再生する操作はPlay()やPlayOneShot()です。表示とシミュレーションの有効状態は別です。 |
| CPU/GPU・速度・時間・空間・終了時処理 | Editor / C# | SimulationTarget / PlaybackSpeed / UseUnscaledTime / SimulationSpace / StopAction | CPUとGPUで使えるModuleが変わります。非スケール時間はTimeScaleに依存しない進行です。空間はLocalが生成元へ追従、Worldは独立、PhaseSettingsは各Phaseの設定を使います。終了後はNone=保持、Disable=GameObject無効、Destroy=破棄を選びます。 |
| Seed | Editor / C# | useAutoRandomSeed / randomSeed | 固定した見た目を比較する場合は自動生成を無効にしてSeedを揃えます。自動生成を有効にすると再生ごとに乱数が変わります。 |
| 再生・単発・一時停止・停止・消去 | Editor / C# | Play / PlayOneShot / Pause / Stop / Clear | Playは再生、PlayOneShotは単発再生、一時停止は続きを保持します。Stopは新規発生の停止、Clearは発生済み粒子の消去です。StopEmittingAndClearを指定したStopも使えます。withChildrenは子のParticleSystemへ操作を伝えるかです。 |
| 発生設定・Emitter形状 | Editor / C# | GetSettings / SetSettings | emitterに発生間隔・発生数・最大数・初速・オフセットと発生形状を持ちます。Emitter形状は粒子の出る位置を決めるもので、描画する粒子のMesh形状とは異なります。 |
| 描画・Material・Texture・表面 | Editor / C# | GetSettings / SetSettings | shape/model/material、描画空間、ブレンドとキュー、Billboard、TextureのUVを設定します。surfaceにはSoft Particle、照明・影・IBL、法線、MetallicとRoughnessがあります。 |
| Trail | Editor / C# | GetSettings / SetSettings | trailに描画方式、元の粒子の表示、消滅後の残留、UV方式・繰り返し距離、幅と色、軌跡点数・間隔・寿命、Material、容量とメモリ上限を持ちます。粒子数とは別の負荷が生じます。 |
| Phase・ペアレント・Module | Editor / C# | GetSettings / SetSettings | Phaseの名前・寿命・終了時処理・Materialと、親への追従を設定します。更新Moduleは個別に有効化でき、並び順も保持します。CPU/GPUの対応はModule一覧を参照してください。 |
| GPU発生元・GPUイベント | Editor / C# | GetSettings / SetSettings | sourceでMeshの頂点・表面、Camera、画像などの発生元を選びます。マスク、表面固定、速度・色の継承も指定します。feedbackはイベント経路、塗装、衝突デカールと各容量上限です。GPU向け機能であり、通常のC#接触通知と同じ即時処理ではありません。 |
| 表示レイヤー・描画順 | Editor / C# | RenderingLayerMask / Layer / Order | Cameraへの選別と描画の並びを指定します。発生元やFieldを選ぶマスクとは別です。 |
| 編集中も再生・エミッター形状を描画 | Editorのみ | — | 編集時のPreviewと補助線の表示です。現在のParticleSystemの公開C# APIには、この2つを直接切り替えるプロパティはありません。ゲーム中の再生には再生APIを使います。 |
| 粒子数・Trail数・容量超過 | Editor表示 / C#読取専用 | hasValidStatistics / particleCount / trailCount / droppedTrailCount | GPUの統計は読戻し待ちになる場合があります。hasValidStatisticsを確認してから件数を読みます。Trail容量超過は点や軌跡を保持できなかった数を調べる診断です。 |
| 粒子属性・軌跡点容量の目安MB | Editor表示のみ | — | Inspectorでメモリ消費の規模を確認するための表示です。実際の予算は最大粒子数やTrailの点数・容量・メモリ上限で設定します。 |
初期値はEngineのComponent定義時の値で、C++表記を含みます。C#へ貼り付ける実行例ではありません。既存Sceneの保存値や既定Assetがある場合はそちらが優先されます。数値の編集範囲はInspectorで制限される場合があります。
C#から使う
操作型はParticleSystemです。 GameObjectから取得する基本操作はGameObjectの操作を参照してください。以下には基本プロパティだけでなく、公開関数・追加の設定API・継承した共通操作も掲載します。
実用例:Eキーで単発の演出を再生する
作成済みのParticleSystemと同じGameObjectへ追加します。自動再生設定と、その場での再生関数を分けています。
cs
using NEMEngine;
public sealed class ParticleBurst : MonoBehaviour {
private ParticleSystem? system;
void Start() {
// 自動再生の設定と、現在の再生状態を別々に変更
system = GetComponent<ParticleSystem>();
if (system == null) return;
system.PlayOnAwake = false;
system.Stop(stopBehavior: ParticleSystemStopBehavior.StopEmittingAndClear);
}
void Update() {
// Eキーを押したframeだけ単発再生
if (system != null && Input.GetKeyDown(KeyCode.E)) system.PlayOneShot();
}
}設定用・関連するC#型
- ParticleSystemSettings
- ParticleEmitterSettings
- ParticlePhaseSettings
- ParticleModuleSettings
- ParticleTrailSettings
- ParticleSourceSettings
- ParticleSurfaceSettings
- ParticleFeedbackSettings
- ParticleEventRouteSettings
選択値(Enum)
| 型・各値の詳説 | 使える値 |
|---|---|
| ParticleSimulationTarget | CPU / GPU |
| ParticleSystemSimulationSpace | Local / PhaseSettings / World |
| ParticleSystemStopAction | Destroy / Disable / None |
| ParticleSystemStopBehavior | StopEmitting / StopEmittingAndClear |
ParticleSystem
| 宣言・詳説 | 種類・操作 | 役割 |
|---|---|---|
public void Clear(bool withChildren = true) | 関数 | 発生済みの粒子を消去します。ParticleSystemの設定やGameObjectを削除する操作ではありません。 |
public bool Enabled | プロパティ(読取・変更) | このComponentの処理を有効にします。GameObject全体のアクティブ状態とは別です。 |
public static ParticleSystem FromEntity(GameObject gameObject) | 関数 | 既にComponentを持つGameObjectから操作用の参照を作ります。Componentを追加する操作ではありません。 |
public ParticleSystemSettings GetSettings() | 関数 | Emitter・Phase・Module・Trail・GPU設定を持つ編集用Snapshotを取得します。変更後はSetSettingsへ戻します。 |
public bool IsAlive(bool withChildren = true) | 関数 | 発生や生存粒子が残っているかを調べます。isPlayingと異なり、停止後に残った粒子を含む終了判定へ使います。 |
public int Layer | プロパティ(読取・変更) | 描画するLayer番号です。 |
public int Order | プロパティ(読取・変更) | 同じLayer内の並び順です。 |
public void Pause(bool withChildren = true) | 関数 | 粒子の再生状態を保持して一時停止します。消去とは異なり、Playで続きの再生へ戻せます。 |
public void Play(bool withChildren = true) | 関数 | 再生を開始または再開します。withChildrenで子のParticleSystemにも操作を伝えるかを選びます。 |
public bool PlayOnAwake | プロパティ(読取・変更) | 自動再生するかを指定するboolプロパティです。system.PlayOnAwake = true; と代入します。今再生する関数はPlay()で、このプロパティを関数として呼び出しません。 |
public void PlayOneShot(bool withChildren = true) | 関数 | 演出を単発で再生します。繰り返す環境効果ではなく、攻撃・着弾などの一度の発生に使います。 |
public float PlaybackSpeed | プロパティ(読取・変更) | 再生時間に掛ける倍率です。 |
public uint RenderingLayerMask | プロパティ(読取・変更) | このRendererを表示するCameraのCullingMaskと照合するbit集合です。 |
public void SetSettings(ParticleSystemSettings settings) | 関数 | 編集済みSnapshotをこのParticleSystemへ反映します。GetSettingsの戻り値だけを書き換えて終了しないでください。 |
public ParticleSystemSimulationSpace SimulationSpace | プロパティ(読取・変更) | 発生済み粒子をEmitterへ追従させるLocalか、Worldへ残すかを指定します。 |
public ParticleSimulationTarget SimulationTarget | プロパティ(読取・変更) | CPUまたはGPUを選びます。使用できるModuleと追加機能が変わります。 |
public void Stop(bool withChildren = true, ParticleSystemStopBehavior stopBehavior = StopEmitting) | 関数 | 新規発生を止めます。stopBehaviorで発生済み粒子も消すかを選びます。withChildrenは子への伝播指定です。 |
public ParticleSystemStopAction StopAction | プロパティ(読取・変更) | 粒子がなくなった後のGameObject無効化・破棄などを指定します。 |
public bool UseUnscaledTime | プロパティ(読取・変更) | TimeScaleの影響を受けない時間で進めます。 |
public bool Visible | プロパティ(読取・変更) | 通常描画に表示するかを指定します。 |
public static int componentTypeID | プロパティ(読取専用) | 組み込みComponentの接続識別子です。通常のゲームコードではGetComponentで取得します。 |
public int droppedTrailCount | プロパティ(読取専用) | Trailの容量上限などで保持できなかった軌跡の診断値です。 |
public bool hasValidStatistics | プロパティ(読取専用) | 粒子数・Trail数の統計が利用可能かを示す読取専用値です。GPUの読戻し待ちと0件を区別します。 |
public bool isEmitting | プロパティ(読取専用) | 新しい粒子を発生させているかを取得します。 |
public bool isPaused | プロパティ(読取専用) | ParticleSystemが一時停止しているかを取得します。 |
public bool isPlaying | プロパティ(読取専用) | ParticleSystemが再生状態かを取得します。 |
public bool isStopped | プロパティ(読取専用) | ParticleSystemが停止状態かを取得します。 |
public int particleCount | プロパティ(読取専用) | 確認できる生存粒子数です。GPUではhasValidStatisticsを併せて確認します。 |
public uint randomSeed | プロパティ(読取・変更) | 固定再生に使う乱数Seedです。 |
public int trailCount | プロパティ(読取専用) | 確認できるTrail数です。最大粒子数とは別の容量を使用します。 |
public bool useAutoRandomSeed | プロパティ(読取・変更) | 再生のたびにSeedを変えます。無効なら指定Seedで再現します。 |
継承する共通操作:Component
継承する共通操作:Object
使用時の注意
設定はComponent内に保存します。GetSettingsで取得した編集用SnapshotはSetSettingsで反映します。
Play中の変更は実行用Worldへ反映します。Scene編集のUndoと実行中の値の変更は別です。保存方法は編集と実行時変更を参照してください。