[Unity 오브젝트 풀(Pooling) 시스템]
■ 목적
● 자주 생성되는 UI/몬스터/이펙트 등 오브젝트를 재사용하여 GC와 Instantiate 비용 최소화
● ObjectPool<T> 기반으로 안정성과 커스터마이징 확보
● Unity 특유의 Destroy된 부모 참조로 인한 예외까지 구조적으로 차단
■ 핵심 설계 요약
| 항목 | 설명 |
| PoolManager | 모든 프리팹 풀을 중앙에서 관리하는 매니저 |
| Pool | 특정 프리팹 하나에 대한 풀 (IObjectPool<GameObject>) |
| OnCreate() | 오브젝트 생성 및 Root에 초기 배치 |
| OnRelease() | 오브젝트 비활성화 + 안전한 부모(Root)로 이동 |
| Push() | 풀에 반납, go.activeSelf 체크로 중복 방지 |
| Pop() | 풀에서 꺼냄, 예외 없이 사용 가능 |
■ 이 구조의 장점
| 항목 | 장점 |
| 커스터마이즈 기능 | Unity의 IObjectPool<T> 사용으로 콜백 네 가지를 제어 가능 (OnCreate, OnGet 등) |
| 안정성 | Push 시 SetParent(Root) 처리로 부모 참조 문제 해결 |
| 일관성 있는 트리 구성 | 모든 풀링 객체는 @프리팹명Pool GameObject 하위에 정리 |
| 중앙 집중 관리 | PoolManager를 통해 모든 풀을 관리하고 Clear, Preload 등 확장 용이 |
| 가벼운 의존성 | MonoBehaviour 상속 없이 순수 C# 객체로 풀 관리 가능 |
'내일 배움 캠프 > TIL' 카테고리의 다른 글
| [내일 배움 캠프] 54일차 TIL (0) | 2025.06.25 |
|---|---|
| [내일 배움 캠프] 53일차 TIL (0) | 2025.06.24 |
| [내일 배움 캠프] 51일차 TIL (0) | 2025.06.20 |
| [내일 배움 캠프] 50일차 TIL (0) | 2025.06.19 |
| [내일 배움 캠프] 49일차 TIL (0) | 2025.06.18 |