Unity/자료

[Unity] Object Pooling

HungryK 2025. 4. 9. 20:24

 


 

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 예제

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

 

참고자료