Unity 연구/UniRX 맨텀 2021. 9. 6. 21:35
UniRX에는 전역적으로 이벤트를 구독하고 호출할 수 있는 옵저버 시스템을 제공한다. 싱글턴으로 처리하는 호출방식에 비해서 직접적인 코드 참조가 없어지니 디커플링은 당연하며, 만약 UI 정보 업데이트를 전부 이벤트 방식으로 처리한다면 UI 오브젝트를 끄더라도 프로그램이 문제없이 작동된다. 1대 1 방식인 직접 호출에 비해서 다대일, 일대다, 다대다 방식을 전부 지원하다 보니 코드도 훨씬 유연해질 수 있다. 이벤트 구독하기 MessageBroker.Default.Receive 를 사용하여 구독하며, 호출은 MessageBroker.Default.Publish를 사용한다. using UnityEngine; using UniRx; public class Script : MonoBehaviour { public..
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..
Unity 연구/UniRX 맨텀 2021. 4. 26. 23:02
참고 : 데브루키 UniRX시작하기 https://www.slideshare.net/agebreak/160409-unirx 스트림의 구독(Subscribe) - 스트림은 Subscribe 된 순간에 생성된다. (LINQ에서도 존재하는 특성) - OnError나 OnComplete가 발생하면 구독이 종료된다. - Subscribe는 오버로드로 정의되어있어 선택적으로 Action을 추가할 수 있다. (기본형은 일반적인 메시지인 OnNext만 Action을 할당하게 되어있다.) 구독의 종료 시점 구독은 OnCompleted()가 호출될 때까지 지속된다. 1) 게임 오브젝트에 연결된 경우 - ObservableTriggers는 연결된 게임 오브젝트가 Destroy될 때 OnCompleted를 호출함. 2) 정적..
Unity 연구/UniRX 맨텀 2021. 4. 25. 19:46
스트림을 만들기 위해서는 관찰 가능한 객체(Observable)를 생성해야 한다. 기존의 델리게이트를 사용하는 객체를 변환할 수도 있고, 별도의 객체를 만들어서 수동으로 메시지를 발행할 수도 있다. 1. Subject 형식을 통해 직접 Observable 객체 만들기 앞서 살펴본 바와 같이 ISubject는 IObservable를 구현하고 있다. subject 객체는 IObserver또한 구현하고 있기 때문에, 직접 메시지를 발행할 수 있다. Subject mySubject = new Subject(); mySubject.AsObservable().Subscribe(n => SomeMethod(n)); // subject객체를 통해 직접 메시지 발행 가능 mySubject.OnNext(0); mySubj..