UniRx의 기본 요소로 아래 3가지로 분류 가능합니다.
- Observable
- Operator
- Scheduler
우선 이 세가지에 대해서 설명해보려고 합니다.
Observable이란?
1. 이벤트 기반 프로그래밍
UniRx는 Reactive Programming이라는 함수형 프로그래밍이 되는 프로그래밍 스타일을 가능하게 하는
라이브러리입니다.
간단하게 함수형 프로그래밍이 무엇인가? 앱의 실행 중 발생한 이벤트를 이벤트 메시지로 통지합니다. 이 이벤트 메시지를
다른 곳에서 구독하고 메시지를 받은 타이밍에서 처리합니다. 이러한 이벤트의 발생 장소와 그 핸들링 장소가 결합되어 있는
스타일의 프로그래밍을 함수형 프로그래밍이라고 합니다. 혹은 이벤트 반응형 프로그래밍!
이 이벤트 구동 프로그래밍은 게임 개발에도 편리하게 이용할 수 있습니다.
- 게임 패드로부터 키 입력될 떄 처리를 실행하는 단계
- 플레이어가 적에게 데미지를 받아서 처리 프로세스 실행하는 단계
- 게임의 남은 시간이 0이 되면 게임을 종료하는 단계
기타 등등...
2. 옵저버 패턴
이벤트를 구현하는 데에 있어 몇 가지 방법이 있으며, 그 중 하나는 옵저버 패턴 입니다.
옵저버 패턴은 GoF 디자인 패턴 중 하나이며 이벤트 알림을 구현하는 데에 사용되는 패턴입니다.
옵저버의 이름대로 관찰자와 관찰 대상 두개체가 있습니다.
UniRx는 이 옵저버 패턴을 기초로 만들어집니다.
단 위와 같이 한 주제에 대해서 알림이 뜨면 여러 관찰자 대상에게 구독의 형식으로 이벤트를 발생 시킬 수 있습니다.
메시지를 수신할 수 있게 되는 IObserver<T> 인터페이스는 다음과 같이 구성되어있습니다.
public interface IObserver<in T>
{
void OnNext(T value);
void OnError(Exception error);
void OnCompleted();
}
public interface IObservable<out T>
{
IDisposable Subscribe(IObserver<T> observer);
}
이 인터페이스 3개의 메소드가 정의되어 있습니다. 각각 다음과 같은 용도로 사용되어집니다.
메서드 이름 | 기능 | |
OnNext | 이벤트 메시지 본문 수신 | |
OnError | 오류 메시지 수신 | |
OnComplete | 이벤트 모든 메시지 발행 완료 통지 | 종료를 뜻한다. |
메인이 되는 이벤트 메시지는 OnNext로 메시지를 받는다. 예외가 도중에 발생이 되면 OnError 이벤트 통지 종료는 OnComplete()에 통지된다.
IObserver를 받는 객체는 관찰 대상(Subject)가 통지하는 형태이고 이 주제에 대해서 관찰하는 친구들은 IObservable을 상속받아 구현하게 되는데 여기서 통지를 받는 친구들은 단 하나의 메서드 Subscribe()만 가집니다.
반환 값이 IDisposable 이므로 Dispose() 메서드를 호출하여 옵저버를 해지할 수 있어야 합니다.
'Unity > UniRx & UniTask' 카테고리의 다른 글
UniRx의 작동 원리(5) 스케쥴러 (0) | 2023.01.08 |
---|---|
UniRx의 작동 원리(4) Observable의 본질 (0) | 2022.12.18 |
UniRx의 작동 원리 (3) Observable을 다루는 방법 (0) | 2022.11.27 |
UniRx의 작동 원리 (2) - Observable (0) | 2022.11.20 |
함수형 프로그래밍 (FP) (0) | 2022.11.07 |