このプロジェクトについて
Particle Effect For UGUI(UI Particleとも呼ばれる)は、mob-sakaiによるUnityパッケージで、ParticleSystemエフェクトをUnity UI(uGUI)階層の一部として描画できるようにします。これは、UIマスク内でパーティクルエフェクトを表示し、他のUI要素と正しくソートするという長年の問題を解決するために作成されました。
このパッケージは、Unity 2018.2以降で利用可能なUnityの`MeshBake`および`MeshTrailBake` APIを使用して、パーティクルデータをCanvasRendererが直接表示できるメッシュジオメトリに変換します。これにより、別のカメラ、RenderTexture、または追加のCanvasを必要とする従来の回避策が不要になり、パフォーマンスのオーバーヘッドや視覚的なアーティファクトが発生することがよくありました。
主な機能は次のとおりです。
- **マスクサポート**:互換性のあるシェーダーと併用する場合、`Mask`および`RectMask2D`コンポーネントの両方で動作します。
- **ソート可能**:パーティクルは、他のUI要素とともに兄弟インデックスの順序を尊重します。
- **トレイルモジュールサポート**:ParticleSystemトレイルモジュールとの完全な互換性。
- **CanvasGroupアルファ**:CanvasGroupの透明度設定と統合します。
- **割り当てなし**:フレームごとのガベージコレクションのオーバーヘッドを回避するように設計されています。
- **任意のキャンバスレンダーモード**:オーバーレイ、ワールドスペース、カメラスペースのレンダーモードと互換性があります。
- **レンダーパイプラインサポート**:ビルトイン、ユニバーサルレンダーパイプライン(URP)、ハイデフィニションレンダーパイプライン(HDRP)で動作します。
- **メッシュ共有**:複数の同一エフェクトがシミュレーション結果を共有できるため、多数の類似パーティクルを表示する際のパフォーマンスコストを大幅に削減します。
- **アダプティブスケーリング**:画面解像度によるCanvasスケール変更時の自動スケール調整。
- **エミッション位置モード**:絶対(ワールドスペース)または相対(ローカルスケーリング)のエミッション位置を選択できます。
- **UIParticleAttractor**:パーティクルをターゲット位置に引き寄せるコンポーネントで、移動タイプとカーブを設定できます。
- **ParticleSystemPreviewer**:シーンビューでパーティクルエフェクトをプレビューするためのエディタ専用コンポーネント。
このパッケージは、3つの主要コンポーネントを提供します。
1. **UIParticle** — コアコンポーネント。ParticleSystemを含む、または含む予定のGameObjectにアタッチします。パーティクルのベイクとuGUIパイプラインへのレンダリングを管理します。AnimationClipによるマテリアルプロパティのアニメーション、複数マテリアル、タイムスケール乗数をサポートします。
2. **UIParticleAttractor** — オプションのコンポーネントで、指定されたParticleSystemから宛先ポイントに向かってパーティクルを引き寄せます。速度、移動タイプ(線形、スムーズ、スフィア)、完了イベントを設定できます。
3. **ParticleSystemPreviewer** — エディタ専用のヘルパーで、GameObjectがシーンビューで選択されているときにプレビュー用の一時的なParticleSystemを生成します。ビルドには含まれません。
インストールは、OpenUPM(`openupm add com.coffee.ui-particle`)、git URLからのUPM、または埋め込みパッケージとしてサポートされています。このパッケージにはUnity 2018.3以降が必要です。
シェーダーの制限:このパッケージは、`UI/Default`を除くほとんどのビルトインシェーダーをサポートしていません。カスタムシェーダーには、マスキング用のステンシルサポートを含める必要があり、Unity 2018–2019では、UV zwコンポーネントが破棄されるため、一部のシェーダーに影響する可能性があります。推奨されるアプローチは、ビルトインの`UI/Additive`または`UI/Default`シェーダーを使用するか、ドキュメントに記載されているステンシルベースのテンプレートに従ってカスタムシェーダーを作成することです。
パフォーマンスに関しては、同じエフェクトの多数のコピーを表示する場合、シミュレーションを重複排除してドローコールを削減するメッシュ共有機能が非常に役立ちます。メッシュ共有がない場合、UIParticleはUIスペース内の生のParticleSystemよりも少ないオブジェクトを使用しますが、UI外で使用される標準のParticleSystemよりも依然として高コストです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.