UniRx

什么是UniRx?

UniRx(Unity的响应式编程框架)是.Net响应式编程框架的重新实现版本。官方的Rx的实现方式是非常棒的。但是,在Unity中使用会有一些问题;在IOS的IL2CPP中有兼容性的问题。UniRx修复这些问题,并针对Unity添加了一些特别的工具。支持的平台包括PC/Mac/Android/iOS/WebGL/WindowsStore/等等。

为什么使用Rx?

通常,在Unity对网络操作要求使用WWW和Coroutine.但是出于以下几点原因(或者其它原因)使用协程来进行异步操作并不顺手:

1.虽然协程的返回类型必须是IEnumerator,但是协程不能返回任何值。 2.因为yield return 语句不能被try-catch结构体包裹,协程中不能处理异常。

这种缺乏可组合性导致程序的紧耦合,往往造成IEnumators中逻辑过于复杂。

Rx可以解决异步调用的“伤痛”,Rx 是一个使用可观察集合和LINQ风格查询运算符组合成的基于异步和基于事件的可编程库。

游戏循环(every Update,OnCollisionEnter),传感器数据(Kinect,Leap Motion,VR Input 等等)这些类型的事件。Rx将事件表示为响应式序列。通过使用LINQ查询运算符,Rx变得容易组合且支持基于时间的操作。

Unity通常是单线程的,但是UniRx促进了多线程joins、cancel 访问GameObject,等等。

UniRx为UGUI提供了UI编程。所有的UI事件(clicked,valuechanged,等)均可以被转化为UniRx的事件流。

Unity 在2017之后支持C# 中的astnc/await。UniRx 为Unity提供了更轻量、强大的async/await集成。请看: Cysharp/UniTask.

© 2017~ 随风逐叶 all right reserved,powered by Gitbook文章修订时间: 2021-07-14 17:42:42

results matching ""

    No results matching ""