ObjectPoolManager는 Unity에서 오브젝트 풀링을 쉽게 관리할 수 있도록 도와주는 클래스입니다. 기존의 InstantiateDestroy 함수를 대체하여 성능을 향상시킬 수 있습니다. 아래는 ObjectPoolManager의 사용 방법과 예시입니다.

1. 준비 단계

1.1. ObjectPoolEntry 상속

풀링할 프리팹에 포함될 스크립트는 MonoBehaviour 대신 ObjectPoolEntry<A>를 상속해야 합니다. 여기서 <A>는 오브젝트를 구분할 ID의 타입입니다.

using DDObjectPool;

public class MyPooledObject : ObjectPoolEntry<int>
{
    public override void initializeObject()
    {
        // 오브젝트 초기화 코드 작성
    }
}

initializeObject() 메소드에 대한 설명

1.2. ObjectPoolManager 초기화

ObjectPoolManager 인스턴스를 생성하고 초기화합니다.

using DDObjectPool;

public class GameManager : MonoBehaviour
{
    public Transform creativeArea; // 오브젝트가 생성될 부모 Transform
    private ObjectPoolManager<MyPooledObject, int> objectPool;

    void Start()
    {
        objectPool = new ObjectPoolManager<MyPooledObject, int>();
        objectPool.initialize(creativeArea, this);
    }
}

2. 오브젝트 생성과 반환

2.1. 오브젝트 생성

오브젝트를 생성할 때는 Instantiate 함수를 사용합니다. 이 함수는 풀에서 사용 가능한 오브젝트를 가져오거나, 없으면 새로 생성합니다.

public void CreateObject(MyPooledObject prefab)
{
    MyPooledObject newObject = objectPool.Instantiate(prefab);
    // 추가 설정이 필요하면 여기서 수행
}

2.2. 오브젝트 반환

오브젝트를 사용한 후에는 Destroy 함수를 사용하여 풀에 반환합니다.

public void DestroyObject(MyPooledObject instance)
{
    objectPool.Destroy(instance);
}