2020. 5. 25. 23:24ㆍStudy/Unity
UniRx - Reactive Extension for Unity
공식 Rx 가 Unity 에서 작동하지않으면 IOS IL2CPP 호환성 문제가 있어 유니티에서 라이브러리를 사용하기 위해 유니티를 위해
재구현을 한 것이다.
*Reactive Programming : programming with asynchronous data streams
관찰하고자 하는 대상을 관찰할 수 있는 형태로 만들어서 값의 변화, 혹은 (=이벤트)의 발생을 감지하는 것으로 이 값들은 마치 물이 흐르듯 스트림을 통해 흐르는 것에 비유할 수 있는데, 경우에 따라서는 이들 값들을 필터링하거나 버퍼링할 수도 있으며 다른 스트림의 값을 흘려 보내는 일과 같은, 값에 대한 연산을 하는 것이 가능하다. 원하는 값이 통지되면 이 값에 대한 처리를 하며, 스트림에 값이 흐르는 동안 이 처리를 반복한다.
Observer Design Pattern 을 활용하는 것이 핵심이다. - 명령형 프로그래밍과 차이가 있다.
Observer Design Pattern의 통지 처리를 이용하여 미리 어떤 조건이 발생할 경우 어떠한 처리를 하라고 미리 지시를 내려놓고 그 지시가 통과된 시점에서만 통지를 받는 형태.
-사용방법이 LINQ 쿼리 방식이기에 러닝커브가 어느정도 있음.
사용법 : 무료로 에셋스토어에 UniRx를 검색하여 사용할 수 있다.
목적 : Unity 내에서 비동기 작업을 하기 위해 사용됨.
Unity는 기본적으로 단일 스레드 형식이지만, UniRx는 join, cancels, accessing GameObject 등을 위해 멀티 스레딩을 가능하게 한다.
장점 : 시간과 타이밍의 관리가 매우 편리해지며 이어서 코드의 가독성과 라인 수를 개선할 수 있다.
예를 들면 마우스의 더블클릭 판정, UI 반응, 특정 변수 값이 변경되는 순간의 처리를 업데이트 함수 내에서 체크하지 않고, UniRx를 사용하여 간단하게 제어할 수 있다.
<사용용어정리>
- Observable - 객체를 관찰할 수 있는 형태로 만드는 것 , reactive programming의 시작점
- Operator - 관찰 대상(Observable)이 결정되면 스트림에 값을 방류해야 하는데 이때 필터링하거나 버퍼링을 할 수 있음. 또는 값을 선택해서 조건에 맞는 값들만 방류할 수 있음.
- Subscribe - 값이 통지되었을 때, 이 값에 대한 처리를 함
'Study > Unity' 카테고리의 다른 글
(C#) Virtual / Abstract / Interface (0) | 2021.05.31 |
---|---|
데이터 저장하기 (0) | 2020.09.19 |
Unity에서 GameCenter 적용시키기 (0) | 2020.08.20 |
MVC Pattern - Design pattern (0) | 2020.06.07 |
IEnumerator 사용 예시 (0) | 2020.06.01 |