A reactive programming library for Unity that ports .NET Reactive Extensions with Unity-specific utilities and cross-platform support.
UniRx is a reactive programming library for Unity that ports .NET Reactive Extensions (Rx) to the game engine. It solves asynchronous programming challenges in Unity, such as handling events, network calls, and coroutines, by providing observable sequences and LINQ-style operators. The library ensures cross-platform compatibility and adds Unity-specific utilities like ObservableTriggers and ReactiveProperty.
Unity developers building games or interactive applications who need to manage complex asynchronous workflows, event handling, and UI updates in a composable and maintainable way.
Developers choose UniRx over vanilla Unity coroutines or callbacks because it offers a declarative, composable approach to asynchronous programming, reduces boilerplate, and integrates seamlessly with Unity's event system and uGUI, leading to cleaner and more testable code.
Reactive Extensions for Unity
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly converts Unity events like Update and UI clicks into observables via ObservableTriggers, enabling reactive game loops and uGUI interactions without boilerplate.
Provides ObservableWWW for network calls with progress and error handling, plus coroutine interop via FromCoroutine, allowing LINQ-style composition of asynchronous operations.
ReactiveProperty and ReactiveCollection enable lightweight property change notifications, simplifying UI updates in patterns like Model-View-ReactivePresenter without complex event systems.
Supports safe multithreading with ObserveOnMainThread for GameObject access, allowing background tasks without breaking Unity's single-threaded constraints.
The README explicitly states to use Cysharp/R3 instead, indicating reduced active development and potential lack of new features or fixes for UniRx.
Reactive programming concepts like observables and subscriptions can be abstract for developers accustomed to Unity's imperative coroutines, requiring significant upfront learning.
Async/await integration was separated to UniTask after version 7.0, forcing teams to manage multiple libraries for modern asynchronous programming in Unity.