본문 바로가기
Unity/자료

[Unity] Object Pooling

by HungryK 2025. 4. 9.

 


 

Object Pooling이란?

Object Pooling은 성능 최적화를 위해 자주 생성하고 파괴해야하는 오브젝트를 사전에 새성하고 재사용하는 방법이다.

나의 경우에는 프로젝트에서 주기적으로 ball을 발사하는 canon때문에 사용하게 되었다.

 

 

처음에 작성했던 스크립트는 Instanctiate를 한 다음, 특정 Y축에 도달하면 Destory되도록 만들어 놓았다.

여기서 문제가 발생한다. 

 

Instantiate는 새로운 메모리를 할당하고 초기화

(= 용량 낭비 발생 가능성 증가)

Destroy는 오브젝트를 메모리에서 제거하고 Garbage Collection을 통해 메모리 정리 

(= 시점 예측 불가 및 프레임 드랍 발생 가능성) 

 

Object Pooling은 자주 사용될 오브젝트를 생성해둔다음, 사용하지 않는 동안에는 Pool이라는 공간에 따로 저장을 해두고 필요할때마다 오브젝트를 사용(get)할 수 있게 해주고 반환시(Release) 다시 Pool로 돌아오는 구조를 가지고 있다. 

 

즉, 파괴-생성이 아닌 돌려쓰기인것

Object Pooling 사용법

  • using.UnityEngine.Pool 선언
  • ObjectPool<> 변수를 선언
  • 초기화시 (Create, Get, Release, Destroy, maxSize: ) 설정
  • 오브젝트를 요청/생성하는 경우 ⇒ {해당Pool}.get() 
  • 오브젝트를 해제하는 경우 ⇒ {해당Pool}.Release(오브젝트) 

Object Pooling 예제

프로젝트내에 작성해서 무사히 작동하는 것을 확인하였음. 코드 예제는 아래 자료 참고. 

 

참고자료