[Zenject] Context

Dev W·2022년 12월 15일
0

zenject

목록 보기
5/7

젠젝트에서 Context는 Container와 Installer를 연결하는 역할을 한다.

젠젝트는 4가지 유형의 Context를 제공한다.

  • Scene Context
  • GameObject Context
  • Decorator Context
  • Project Context

Scene Context

1. Scene Context

Scene Context는 유니티 Scene 진입시에 실행된다.

Project Context가 초기화된 이후 첫번째로 실행되며 현재 Scene의 모든 종속성을 설정한다.

2. GameObject Context

GameObject Context는 하위 컨테이너 컨텍스트이다.

각 Scene마다 여러개의 인스턴스를 가질 수 있고, 각 게임오브젝트 별로 종속성에 대한 그룹화 역할을 한다.

퍼사드(Facade) 패턴을 구현하는데 사용된다.

3. Decorator Context

Decorator Context는 해당 Scene에 연결된 중첩된 컨텍스트이다.

Scene에 기능을 동적으로 추가하고, Scene Context와 동일한 컨테이너를 공유한다.

4. Project Context

Project Context는 리소스 폴더에 프리팹으로 존재하는 글로벌 컨텍스트이다.

프로젝트 전체의 글로벌 종속성을 만드는데 사용된다.

Project Context는 앱 시작시 한번만 초기화되며, 해당 종속성은 모든 Scene에서 재사용된다.


Context 작동 순서

젠젝트의 모든 것은 유니티의 Awake 단계에서 시작된다.

Project Context는 Awake()시에 첫번째로 초기화되며, 앱의 전체 수명주기동안 딱 한번만 발생한다.

우선 주입가능한 MonoBehaviour들이 컨텍스트의 Container로 전달된 다음,

연결된 Installer에서 InstallBindings()가 호출된다.

그리고나서 Non-Lazy 오브젝트들이 생성된다.

이렇게 Project Context의 초기화가 완료되면,

동일한 프로세스로 Scene Context(그리고 Decorator Context)가 초기화된다.

마지막으로 Scene의 각 GameObject Context가 역시 동일한 프로세스로 초기화된다.

0개의 댓글