๐ซUniRX
Why Rx?
๋ณดํต, Unity์์ Network ์์
์๋ WWW
์ Coroutine
์ด ํ์ํฉ๋๋ค. ์ฆ, Coroutine
์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋๋ฌธ์ ๋น๋๊ธฐ ์์
์ ์ ํฉํ์ง ์์ต๋๋ค.
Coroutine์ ๋ฐํ ํ์์ด IEnumerator ์ฌ์ผ ํ๋ฏ๋ก ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค.
Coroutine์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์ต๋๋ค. yield return ๋ฌธ์ try-catch ๊ตฌ์กฐ๋ก ๋๋ฌ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ์ข ๋ฅ์ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ ๋ถ์กฑ์ผ๋ก ์ธํด ์์ ์ด ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ๊ฑฐ๋ํ monolithic IEnumerator๊ฐ ๋ฉ๋๋ค. Rx๋ ๊ทธ๋ฐ ์ข ๋ฅ์ "asychronous blues" ๋ฅผ ๊ณ ์นฉ๋๋ค. Rx๋ observable ์ปฌ๋ ์ ๊ณผ LINQ ์คํ์ผ ์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ๋ฐ ์ด๋ฒคํฐ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋๋ค. game loop(๋ชจ๋ Update, OnCollisionEnter, ๋ฑ), sensor data (Kinect, Leap Motion, VR Input, ๋ฑ)๋ ๋ชจ๋ ์ ํ์ ์ด๋ฒคํธ ์ ๋๋ค. Rx๋ LINQ ์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ support time-base ์์ ์ ์ง์ํ๋ reactive sequences๋ก ์ด๋ฒคํธ๋ฅผ ๋์ ํฉ๋๋ค. Unity๋ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ผ ์ค๋ ๋์ด์ง๋ง, UniRx๋ join, cancels, accessing GameObject ๋ฑ์ ์ํด ๋ฉํฐ ์ค๋ ๋ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. UniRx๋ uGUI๋ก UI ํ๋ก๊ทธ๋๋ฐ์ ๋์์ค๋๋ค. ๋ชจ๋ UI ์ด๋ฒคํธ(clicked, value changed, etc)๋ UniRx event stream ์ผ๋ก ๋ณํ ๋ ์ ์์ต๋๋ค. Unity๋ C # ์ ๊ทธ๋ ์ด๋๋ฅผ ํตํด 2017 ๋ ๋ถํฐ async/await๋ฅผ ์ง์ํ๋ฉฐ UniRx ์ ํ๊ตฐ ํ๋ก์ ํธ๋ Unity์ ๋์ฑ ๊ฐ๋ณ๊ณ ๊ฐ๋ ฅํ sync/await ํตํฉ์ ์ ๊ณตํฉ๋๋ค. Cysharp / UniTask๋ฅผ ์ฐธ์กฐํ์ญ์์ค .
Last updated