コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】簡単にオブジェクトプールを使用できる「Master Object Pooler 2」紹介

はじめに

「Master Object Pooler 2」を Unity プロジェクトに導入することで
簡単にオブジェクトプールを使用できるようになります

使い方

f:id:baba_s:20200119174828p:plain

Project ビューの「Create > Master Object Pooler 2 > Object Pool」を選択して

f:id:baba_s:20200119174831p:plain

オブジェクトプールを管理するアセットを作成します

f:id:baba_s:20200119174833p:plain

作成したアセットにオブジェクトプールで使用するプレハブなどを設定します

項目 内容
Name オブジェクトプールの名前
Template オブジェクトプールで使用するプレハブ
Default Size 最初から作成しておくオブジェクトの数
Max Size プールできるオブジェクトの最大数
Incremental Instance Name 生成したオブジェクトの名前に連番を付けるかどうか
Auto Initialize 自動で初期化するかどうか
using QFSW.MOP2;
using System.Collections;
using UnityEngine;

public class Example : 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 );

        yield return new WaitForSeconds( 1 );

        // 生成したオブジェクトをオブジェクトプールに戻す
        m_pool.Release( newObject );
    }
}

そして上記のようなスクリプトを作成して

f:id:baba_s:20200119174836p:plain

スクリプトにオブジェクトプールをアセットを設定することで

f:id:baba_s:20200119174839g:plain

使用できるようになります