Unityに関連する記事です

 エフェクトを生成し、破棄を行うサイクルは、同じエフェクトを繰り返し利用することを考えると大変勿体ない処理です。
そこでこの手順ではオブジェクトプールの機能を作成し、エフェクトを破棄して使い捨てるのではなくて、非表示にしておいて、再利用する仕組みを作成します。

 こちらの処理を実装するにあたり、事前準備が必要になります。

   => スクリプタブル・オブジェクトを利用したエフェクトの管理
   => エフェクト生成処理の実装例

 先にこちらの処理を実装し、理解を深めておいてください。



設計


 オブジェクトプールを実装するために、EffectManager クラスを修正し、パーティクルを取得する際にオブジェクトプールを使用する方法を以下に示します。
オブジェクトプールは一度生成したパーティクルを再利用することで、パフォーマンスの向上が期待できます。


EffectObjectPool スクリプトを作成する


 まず、オブジェクトプール用のクラスを作成します。
これは使用されなくなったエフェクト用のパーティクルを保持し、必要な時に再利用するためのものです。




EffectManager スクリプトを修正し、オブジェクトプールの機能を追加する


 次に、EffectManagerクラスにオブジェクトプールを組み込みます。



 ここで、オブジェクトプール用にEffectObjectPoolクラスを作成し、オブジェクトプールの初期化やパーティクルの取得・返却を行うようにしました。


EffectIdentifierスクリプトを作成する


 パーティクルのPrefabにEffectIdentifierコンポーネントを追加します。
これはパーティクルがどのEffectNameに対応しているかを識別するために使用します。



 これで、パーティクルの取得と返却がオブジェクトプールを利用するようになります。


利用方法


 エフェクトを使用したい時はGetEffectFromNameメソッドを呼び出し、不要になったパーティクルはReturnEffectToPoolメソッドでオブジェクトプールに戻します。

 この手法を利用することにより、必要になったエフェクトがない場合だけ、新しいパーティクルを作成し、
すでに不要となってオブジェクトプール内に待機しているエフェクトがある場合には、それを再利用することで、毎回のエフェクトの生成処理を止めて、効率化しています。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます