### **프로젝트 루트 `LifetimeScope` 설정**
VContainer는 모든 `LifetimeScope`의 최상위 부모로 작동하는 단일 루트 `LifetimeScope`를 지정할 수 있는 기능을 제공합니다.
**설정 단계:**
1. **루트 `LifetimeScope` 프리팹 생성:** 먼저, Unity 프로젝트 내에 루트 `LifetimeScope`로 사용할 프리팹을 생성해야 합니다. 이 프리팹은 `LifetimeScope` 컴포넌트를 포함해야 합니다.
- 새로운 `GameObject`를 만들고, `LifetimeScope` 컴포넌트를 추가한 뒤, 이 `GameObject`를 프리팹으로 저장합니다.
2. **`VContainerSettings` 에셋 생성:** Unity 에디터에서 `Assets` -> `Create` -> `VContainer` -> `VContainer Settings` 메뉴를 통해 `VContainerSettings` 에셋을 생성합니다.
- **정보 (INFO):** 이 메뉴를 통해 `VContainerSettings`를 생성하면, Unity의 'Preloaded Assets'에 자동으로 등록됩니다. 'Preloaded Assets'는 게임 시작 시 항상 로드되는 에셋 목록입니다. 만약 `VContainerSettings`가 로드되지 않는 문제가 발생하면, `Project Settings` -> `Player` 설정에서 'Preloaded Assets' 목록에 `VContainerSettings`가 포함되어 있는지 확인해야 합니다.
3. **`VContainerSettings`에 루트 `LifetimeScope` 할당:** 생성된 `VContainerSettings` 에셋을 선택하고 인스펙터 창에서 `Root Lifetime Scope` 섹션에 앞서 생성한 루트 `LifetimeScope` 프리팹을 드래그 앤 드롭하여 할당합니다.
**루트 `LifetimeScope`의 역할과 이점:**
- **전역 의존성 관리:** 애플리케이션의 어떤 부분에서든 접근할 수 있는 `Singleton` 또는 `Scoped` 라이프타임의 전역 의존성(예: 게임 설정, 서비스 로케이터, 핵심 시스템 등)을 등록하는 데 이상적인 위치입니다.
- **계층 구조의 최상위:** 모든 다른 `LifetimeScope`(씬 기반, 코드 기반 등)는 명시적으로 부모를 지정하지 않는 한, 이 루트 `LifetimeScope`를 암묵적인 부모로 갖게 됩니다. 이를 통해 일관된 의존성 계층 구조를 보장할 수 있습니다.
- **초기화 보장:** 'Preloaded Assets'에 등록되므로, 게임이 시작될 때 가장 먼저 로드되고 초기화되어 필요한 전역 서비스들이 항상 준비되도록 합니다.
- **테스트 용이성:** 루트 스코프에 전역 의존성을 정의함으로써, 특정 테스트 시나리오에서 이 루트 스코프만 변경하거나 모의(mock) 객체로 교체하여 테스트를 용이하게 할 수 있습니다.
### 요약
VContainer에서 프로젝트 전반의 의존성을 관리할 수 있는 중앙 허브 역할을 하는 루트 `LifetimeScope`를 설정하는 방법을 상세히 설명합니다. `VContainerSettings` 에셋을 통해 루트 `LifetimeScope` 프리팹을 지정함으로써, 개발자는 Unity 애플리케이션의 초기화 단계부터 전역적인 의존성 주입을 효율적으로 관리하고, 견고한 DI 아키텍처를 구축할 수 있습니다.
---
이전 : [[6.3 Generate child scope with code first]] | 다음 : [[7.1 VContainer Diagnostics Window]]