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라고 검색되는데, 원제..
Unity 연구/UniRX 맨텀 2021. 4. 30. 23:02
ReactiveX코리아 http://reactivex.io/documentation/ko/operators 오퍼레이터 - 스트림의 메시지들에 조건을 걸어 필터하거나 가공하는 메소드. - 스트림은 오퍼레이터를 통해 이벤트의 투영, 필터링, 합성이 가능하다. - Where, Select와 같이 LINQ에 존재하는 오퍼레이터와 동일한 오퍼레이터도 존재한다. 1. 팩토리 메서드 오퍼레이터 기능 Observable.Create 직접 메시지 발행이 가능한 객체를 생산한다. Observable.Return 메시지 1개를 발행한다. Observable.FromEvent 이벤트를 Observable로 변환한다. Observable.Timer 특정 시간 이후에 메시지를 배출한다. Observable.TimerFrame 특..
Unity 연구/UniRX 맨텀 2021. 4. 29. 21:22
코루틴과 UniRX는 상호 보완적으로 사용될 수 있다. 코루틴을 Observable로 변환하고, Observable을 코루틴으로 변환하며 혼용 사용이 가능하다. 1. 코루틴을 스트림으로 변환하기 - 복잡한 처리를 코루틴에 숨기고 외부에서는 Observable로서 취급하는 것이 가능하다. - Cold 라서 Subscribe 될 때마다 새롭게 코루틴이 생성되고 시작한다. 1-1) Observable.FromCoroutine - 코루틴의 종료시간까지 대기하다, yield 된 시점에 OnCompleted()메시지가 호출된다. - 첫 번째 인수로는 코루틴을 취하고, 두 번째 인수로는 yield시점에 OnNext()메시지를 발행하는지 여부 (기본 false이며, OnCompleted 직전에 한 번 발급) publi..
Observable의 두가지 타입 : Hot vs Cold Hot Observable - Observable이 생성되자마자 메시지를 발행하기 시작한다. - 구독하는 Observer들은 중간부터 구독을 하게된다. - 스트림을 분기 시키거나, 메시지를 분배하는 것이 가능하다. Cold Observable - Observable을 구독하기 전까지 메시지를 발행하지 않는다. - Observer가 없어지면 동작하지 않는다. - Subscribe 될 때마다 새롭게 생성되며, 별도의 스트림이 된다. - 대부분의 스트림은 Cold이다. Cold Observable의 예시 - 각기 다른 시점에서 3회 Subscribe를 하면, 각자 타이밍이 다르다. (별도의 스트림이 생성된다) var stream = Observable..