커밋명 : 26ec8bc8e0ce3d60e293d74e3bcf03b494901ee9

오브젝트 풀
코드 흐름을 살펴보자
Base.Mng(싱글톤)
- 모든 매니저를 총괄하는 클래스인 베이스 매니저 내부에서 Pool_Mng 인스턴스(Pool)를 생성해둡니다.
- 베이스 매니저 자체도 싱글톤 패턴으로 구현 되어 있어서 Base.Mng.Pool 부분으로 풀매니저 접근이 가능하다
전역에서 Pool_Mng 인스턴스는 여러개가 아니라 아래 처럼 단 한 개만 해놓을 예정이다.

Pool_Mng(클래스)

풀 매니저 특징
- 풀 매니저는 외부에서 풀을 달라고 요청하는 곳이라고 생각하자 (Pooling_Obj)
그래서 Pooling_Obj 메서드가 있고 path값이 딕셔너리에 있는지를 체크하고 없는 경우 Add_Pool로 풀장을 생성한다. - 풀장 생성 로직이 있다. (Add_Pool)
풀장 생성의 핵심은 딕셔너리에 추가할 IPool 인터페이스를 상속받은 클래스를 인스턴스 시키는 것이다. - 풀장에 들어갈 사람 즉, 큐 생성 로직도 있다.
풀장을 만드는 4단계 요약 (Add_Pool)
1. 오브젝트 생성
- 예: `"example##pool"`이라는 이름으로 `new` 오브젝트를 만듭니다.
2. 오브젝트 이동
- 생성한 오브젝트를 `BaseMng` 아래(하위 트랜스폼)로 옮깁니다.
3. IPool 인스턴스화 & 딕셔너리에 추가
- `IPool` 인터페이스를 구현한 객체(예: `Object_Pool`)를 `new` 하여 생성
- 그 인스턴스를 딕셔너리에 등록합니다.
4. 트랜스폼 설정
- 2번에서 옮긴 오브젝트의 `transform`을 3번에서 생성한 객체의 `parentTransform`에 저장합니다.
- 이유: 이후 큐를 생성하거나 프리팹을 인스턴스할 때, 이 `parentTransform`을 통해 새 오브젝트들이 자연스럽게 `"example##pool"` 하위에 배치될 수 있도록 하기 위함입니다.

Object_Pool : IPool ( Add_Pool에서 풀장 새로 생성할 때마다 인스턴스 됨)
풀 관리 : Queue
풀 생성 위치 : ParentTransform
풀 가져오기 : Get()
풀 반납 : Return()

사용방법 정리
아래 코드를 해석해 보자면 Base_Mng ~ ["Monster"] 까지는 딕셔너리에 Monster 풀이 있니? 없으면 알아서 풀장생성하고 큐 생성하고 최종적으로는 딕셔너리에서 꺼낸 IPool을 상속받은 Object_Pool 인스턴스가 반환될 것이고 Get이나 리턴을 통해 큐에 반환하거나 큐에서 꺼내 사용하도록 되어있다.

'유니티 > 구현내용정리' 카테고리의 다른 글
| 유니티 방치형 프로젝트 - 타겟을 향해 날아가는 스킬 구현하기 #2 (0) | 2025.03.12 |
|---|---|
| 유니티 방치형 프로젝트 - 타겟을 향해 날아가는 스킬 구현하기 (0) | 2025.03.12 |
| 유니티 방치형 프로젝트 - 몬스터를 지정 반경 내에 랜덤하게 스폰 시키기(Random.insideUnitSphere) (0) | 2025.03.11 |
| 유니티 Robots 프로젝트 - 매치메이킹 구현 #1 (2) | 2025.03.04 |
| 어드레서블 - AWS 서버에서 다운로드 해야 할 리소스 파일 확인 하는 방법 (0) | 2025.02.16 |
