のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

ObjectPool.csが便利

VR Samplesに入っているObjectPoolが汎用的で便利なのでメモ
ObjectPoolとは、任意のPrefabを大量に生成、破棄をする際に、Instantiate&Destroyの数を最小限に抑える仕組み。

File

AssetStore
https://www.assetstore.unity3d.com/jp/#!/content/51519
Assets/VRSampleScenes/Scripts/Utils/ObjectPool.cs

GameObjectにObjectPoolをアタッチ


Prefabs
PoolするPrefabを指定。複数設定していた場合はRandomに選ばれる
Number In Pool
Awake時にPoolに生成する数を指定

Script

// Componentを取得
var objectPool = GetComponent<ObjectPool>();

// オブジェクトを作成 or Poolから取得
GameObject poolObject = objectPool.GetGameObjectFromPool ();

// オブジェクトを非表示にしてPoolに追加
objectPool.ReturnGameObjectToPool(poolObject);

簡単!
VRコンテンツはソフトウェアの負荷を抑えたいので、こういうUtilが揃っていると助かりますね。

他にも汎用的な便利なスクリプトがUtilsの中に入っているので、色々見ていこうと思います。