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