「Master Object Pooler 2」を利用して簡単にObject Poolを実装する
Master Object Pooler 2 は簡単にObject Poolを実装してくれるMITのアセットです.
Object Pool とは
InstantiateとDestroyは処理が重い.
生成と破棄を繰り返す場合にコストを減らすようにするのが,Object Pool デザインパターン.
リサイクルをイメージする.
準備
2018.3 から 2019.2 まで
Packages/manifest.json
のdependencies
に以下のように付け足す.
"com.qfsw.mop2": "https://github.com/QFSW/MasterObjectPooler2.git"
再度Unityエディタに戻ると内部で処理してくれる.
2019.3 から
後日付け足す.
使い方
Create -> Master Object Pooler 2 -> Object Pool
で Object Pool のテンプレートを作る.
以下のような感じでスクリプトを作る.
生成する場合はObjectPool.GetObject()
を,破棄する場合はObjectPool.Release()
を呼び出せばよい.
using System.Collections; using System.Collections.Generic; using UnityEngine; // Master Object Pooler 2 利用時に必要な宣言 using QFSW.MOP2; public class ObjectPoolTest : MonoBehaviour { // オブジェクトプールテンプレート public ObjectPool m_pool; private void Update() { // スペース押下時にプレハブ生成 if (Input.GetKeyDown(KeyCode.Space)) { StartCoroutine(CreateObject()); } } private IEnumerator CreateObject() { // オブジェクトプールからオブジェクトを生成する var position = Vector3.zero; var newObject = m_pool.GetObject(position); // 1秒後に生成オブジェクトをオブジェクトプールに戻す yield return new WaitForSeconds(1); m_pool.Release(newObject); } }
スペースを押せば,プレハブが生成される.
参考記事
Object Poolを簡単に実装できないか調べたらこちらの記事が出たので自分でもやってみました.