이전 게시물들/유니티
오브젝트 풀링
joypoolstudio
2020. 4. 18. 17:05
개요
유니티 오브젝트 생성(Instantiate)과 삭제(Destroy)시 가비지 콜렉터를 호출합니다. 오브젝트 풀링은 오브젝트를 미리 만들어 놓고 활성/비활성 으로 재상용하여 최적화하는 방법입니다.
아래 코드에서는 풀 사이즈를 정해놓고 배열로 구현했습니다.
리스트를 통해 구현하고 풀사이즈를 조금씩 늘려서 사용하기도 합니다.
(풀 사이즈보다 더 많은 수의 객체를 필요로하면 조금씩 풀 사이즈를 늘린다)
객체를 다 사용하면 파괴하는 대신 비활성화 해주면 됩니다.
코드
public GameObject objPrefab;
public int poolSize;
private int poolIndex;
private GameObject[] pool;
void InitPool()
{
pool = new GameObject[poolSize];
poolIndex = 0;
for (int i = 0; i < poolSize; i++)
{
GameObject obj = Instantiate(objPrefab);
obj.SetActive(false);
pool.Add(obj);
}
}
void MakeObj()
{
pool[poolIndex].SetActive(true);
if (++poolIndex >= sonCubePoolSize)
{
poolIndex = 0;
}
}