UniRX相信很多unity开发者也用过,其特点是进行响应式编程,适合处理复杂的事件流(如 UI 交互、网络请求序列)、需要组合多个异步操作的场景。
但是现在,UniRX已停更,官方Github仓库和Unity资源商城停更很久。商城最后是在2019提交,Guthub仓库则是在2024年2月份归档,取而代之的是R3
将不再局限于unity平台,支持更多平台

安装
因为R3不再局限于某一个开发框架,即使不添加特定的平台支持,也可以只使用核心库。但是,通过将标准 TimeProvider 和 FrameProvider 替换为针对每个平台优化的 Rx ,Rx 变得更加用户友好。例如,虽然标准的 TimeProvider 是基于线程的,但为每个平台使用基于 UI 线程的 TimeProvider 可以消除通过 ObserveOn 进行分派的需要,从而提高可用性。此外,由于消息循环因平台而异,因此使用单个 FrameProvider 是必不可少的。尽管为以下平台提供了标准支持,但通过实现 TimeProvider 和 FrameProvider,可以支持任何环境,包括内部游戏引擎或其他框架。
R3 的最低 Unity 支持是Unity 2021.3版本,团结基于2022版本,理论上也是支持的。安装分为两步,安装NuGetForUnity和导入R3包
安装NuGetForUnity
首先在unity中安装NugetForUnity,通过Nuget安装核心代码。
Github仓库:
在unity的包管理器中,通过git添加本包,地址如下

https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity将NuGetForUnity包导入到Unity内;安装完成后可以在工具栏中看到NuGetForUnity的下拉框,在这里打开manager。自带的包地址在国内访问可能有问题,即打开manager时没有包以及报错,这里去项目设置里的NugetForUnity设置,设置一个新地址:
https://www.nuget.org/api/v2/

安装R3
然后打开Nuget Manager界面,在Search内搜索R3,下拉找到R3包
点击R3然后Install ,完成本部分的安装。
导入R3 unity平台包
这里也是通过unity包管理器导入一个githun上的包

https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity
指定版本包,#1.0.0是版本
https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity#1.0.0使用
在使用时需要进行一次全局初始化默认参数(必须)。不需要特意调用,启动时会自动回调。
using System;
using R3;
using UnityEngine;
namespace Script.AOT.Main
{
/// <summary>
/// 初始化R3响应式编程
/// </summary>
public static class UnityProviderInitializer
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]
public static void SetDefaultObservableSystem()
{
SetDefaultObservableSystem(static ex => UnityEngine.Debug.LogException(ex));
}
public static void SetDefaultObservableSystem(Action<Exception> unhandledExceptionHandler)
{
ObservableSystem.RegisterUnhandledExceptionHandler(unhandledExceptionHandler);
ObservableSystem.DefaultTimeProvider = UnityTimeProvider.Update;
ObservableSystem.DefaultFrameProvider = UnityFrameProvider.Update;
}
}
}使用时和UniRX用法大体一致,其中更改了函数名,这是官方函数名对照表,
所以只要会原来的UniRX,这个也差不多,只需要修改原来的名称即可。

官方文档:
评论