2024 - 01 - 12 Unity D+1 ( UniRx )
UniRx (Reactive Extensions for Unity)
유니티를 위한 반응형 확장을 뜻하는 라이브러리이며,
UGUI, GameObject, Coroutine 등 유니티의 시스템과 매우 강력하고 직관적으로 연동이 되어 쉽게 반응형 프로그래밍이 사용 가능함
'비동기적 데이트 흐름' 을 처리하는 프로그래밍 기법이라는 뜻으로 모든 처리를 비동기적 데이터 스트림으로 간주, Observer 디자인패턴을 활용해서 이러한 비동기 이벤트를 처리하는 것이 핵심
좀 더 쉽게 풀어쓰자면 일련의 흐름을 관찰할 수 있는 Observable 형태로 만들어서
값의 변화, 혹은 이벤트의 발생을 감지하는 것으로 이 값들은 마치 물이 흐르듯 스트림을 통해 흐르는 것에 비유 할 수 있다.
경우에 따라 이 스트림의 값들을 필터링 하거나 버퍼링, 또는 다른 스트림의 값으로 바꾸는 등의 다양한 연산을 할 수 있다.
이렇게 스트림을 조작해서 원하는 결과가 통지되므로 이 때 최종적으로 필요한 처리를 해줄 수 있게 된다.
(예시)
(Observable 감지)
(변수) -> (실시간 값의 변동) -> (값이 변동되었다는 이벤트 전달) -> (이벤트에 따른 처리)
UniRx 를 사용하면 시간 및 타이밍의 관리가 매우 편리해지며 코드의 가독성과 코드 라인 수를 획기적으로 개선할 수 있다.
(예시)
1. 더블 클릭 판정이나 유저의 입력 시간 제한 등의 일정 시간동안 대기 및 체크해야 하는 이벤트
2. 파일을 다운로드 하거나 특정 통신 요청 후 응답 처리하는 경우
3. UI 반응이나 로직 상에 특정 변수 값이 변경되는 순간의 처리
이전에는 해당되는 오브젝트에 멤버 변수를 둔다거나 Update 함수 내에서 변화를 체크하는 식의 작업을 해야 했지만 UniRx 를 사용하면 매우 간단하게 제어할 수 있게 된다.
참고 1 : https://skuld2000.tistory.com/31
참고 2 : http://yoonhada.com/?p=1863