1. Zenject Factory 사용법
- Controller 스크립트, Factory 스크립트, Prefab, Installer 스크립트 필요함
1.1. Controller 스크립트 : MonoBehaviour 상속
- Prefab을 통해 object 생성시 세부 UI 세팅 스크립트
(ex : object 생성시, prefab에 포함된 text 설정)
- 내부에 Factory 클래스 필요.
=> public 클래스명 : Factory<인자값, Controller 스크립트 클래스명>


1.2. Factory 스크립트 : IFactory<인자값, 1.1. 에 명시한 Controller 스크립트 클래스명> 상속
- DiContainer 변수 필요하며, 생성자에서 인자값으로 받아야 함
- public 1.1. 에 명시한 Controller 스크립트 클래스명 리턴함수 작성 필요 (prefab을 통한 object 생성 함수)
=> (ex :
=> public 1.1. 에 명시한 Controller 스크립트 클래스명 Create
{ return DiContainer 변수.InstantiatePrefabResourceForComponent<1.1. 에 명시한
Controller 스크립트 클래스명>(Resources 하위에 있는 Prefab full 명칭,
new object[] { 인자값 });
}


1.3. Prefab
- Resources 폴더 하위에 미리 생성되어 있어야 함.
- Prefab에 1.1 에서 명시한 Controller 스크립트를 Inspector에서 연결해놔야 함
1.4. Installer 스크립트 : MonoInstaller<Installer 스크립트 클래스명> 상속
- Scene Hierarchy에 있는 SceneContext -> Inspector 에 있는 Installers 에 연결할 스크립트
- Installer 스크립트는 Scene Hierarchy Object 중 항상 켜져 있는 Object 하나에서, Inspector 에 추가 해야함.
- public override void InstallBindings() 함수 구현
=> public override void InstallBindings()
{
Container.BindFactory<1.1. 에 명시한 인자값, 1.1. 에 명시한 Controller 스크립트
클래스명.Factory>().FromFactory<3.2. 에서 명시한 Factory 클래스명>();
}


1.5. 실제 사용
- 스크립트에서, 1.1. 에서 명시한 Controller 클래스명.Factory를 자료형으로 갖는 변수를 Inject 받아야 함
=> [Inject]
private 1.1. 에서 명시한 Controller 클래스명.Factory


- 해당 변수.Create(인자값) 을 통해 생성하게 됨.
'Unity' 카테고리의 다른 글
| mp3 -> wav 변환 (0) | 2022.03.24 |
|---|---|
| Zenject Service 사용법 (0) | 2022.03.24 |
| UI Template 사용법 (7) | 2022.03.24 |
| 코드난독화 어셋 사용법 (0) | 2022.03.24 |
| StopCoroutine, StartCoroutine 관련 (0) | 2022.03.24 |