Unity 연구/Zenject 맨텀 2021. 9. 12. 00:39
3-1) 에서 살펴보았던 종속성 맵핑 메서드 중 ConstructionMethod 부분에 대해 따로 알아보자. 이전 예제에서 4번째 줄은 실제 메서드 이름이 아닌 분류 명칭일 뿐이고, 해당 위치에 Construction Method가 필요하다고 표시한 것이다. Container.Bind() .WithId(Identifier) .To() .FromConstructionMethod() // 이것! .AsScope() .WithArguments(Arguments) .OnInstantiated(InstantiatedCallback) .When(Condition) .(Copy|Move)Into(All|Direct)SubContainers() .NonLazy() .IfNotBound(); 1. FromNew - C..
Unity 연구/Zenject 맨텀 2021. 9. 5. 23:54
Zenject에서 바인딩이라고 부르는 'Register a new mapping'에 대해 배워보자. 종속성 맵핑 Zenject에서 종속성 매핑은 컨테이너에 바인딩을 추가하는 방식이다. 컨테이너는 주어진 객체에 대한 종속성을 재귀적으로 해결하여 응용 프로그램의 모든 객체 인스턴스를 만드는 방법을 알고 있어야 한다. 컨테이너가 특정 유형의 인스턴스를 생성하도록 요청을 받으면 C# 리플렉션을 사용하여 생성자 인수 목록과 [Inject] 애트리뷰트로 표시된 모든 필드/속성을 검색한다. 그런 뒤 생성자를 호출하고 새 인스턴스를 만드는 데 사용하는 필수 종속성을 각각 해결하려고 시도한다. 종속성 맵핑 예제 예를 들어 다음과 같은 클래스가 주어졌다면, public class Foo { IBar _bar; public..
Unity 연구/Zenject 맨텀 2021. 9. 5. 21:10
Hellow World 예제 1. Unity 씬의 hierarchy에서 오른쪽 클릭 Zenject -> Scene Context 를 눌러서 오브젝트를 생성함. 2. 프로젝트 뷰에서 오른쪽 클릭 -> Create -> Zenject -> MonoInstaller 이름을 TestInstaller.cs로 지정함. 3. 만들어진 TestInstaller 스크립트를 씬에 추가함. (Context와 같은 오브젝트여도 되고 별도로 생성해도 된다) 4. SceneContext의 MonoInstaller에 TestInstaller를 추가함. 5. TestInstaller.cs에 아래의 코드를 붙여 넣음. using Zenject; using UnityEngine; using System.Collections; publi..
Unity 연구/Zenject 맨텀 2021. 8. 29. 17:03
Zenject 깃허브 링크 https://github.com/modesttree/Zenject Zenject Zenject는 Unity 3D를 대상으로 제작된 DI(종속성 주입) 프레임워크. 오픈소스이다. C#클래스뿐만 아니라 MonoBehaviour 클래스의 초기화를 지원한다. 다른 대표적인 DI 프레임 워크로는 Strangeioc, uFrame등이 있으나, 둘 다 마지막 업데이트가 5년 전으로 지원 중단되어서 메인 프레임워크로 가져가기는 무리가 있다. Zenject는 최근까지도 지원 중인 프레임 워크. 특히 'Signals event system' 라는 항목이 있는데 UniRX 같은 건가 싶어서 기대됨.. Extenject 에셋스토어에 zenject를 검색해보니 Extenject라고 검색되는데, 원제..