UniRx精讲(四):操作符 First&AddTo

操作符 First

在专栏的简介时,有这么一段代码:
    
Observable . EveryUpdate ( ) . Where ( _ => Input . GetMouseButtonUp ( 0 ) ) . First ( ) . Subscribe ( _ => { /* do something */ } ) . AddTo ( this ) ;
这段代码实现了“只处理一次鼠标点击事件”这个功能。
代码很简单,不过有一个陌生的操作符 "First"。
代码中事件通过 Where 过滤之后,又通过 First 进行了一次过滤。
直接看下图就理解了。
很简单,就是获取第一个通过的事件。

更好的实现

First 还可以传一个条件方法(谓词函数)进去。也就是说,以上的功能可以不使用 Where 就可以搞定
    
Observable . EveryUpdate ( ) . First ( _ => Input . GetMouseButtonUp ( 0 ) ) . Subscribe ( _ => { /* do something */ } ) . AddTo ( this ) ;
代码运行的结果与原来一致,运行之后只处理一次 Unity 的鼠标点击事件。
今天的内容就这些。

知识地图

AddTo

在之前的文章中,我们接触了 AddTo 这个 API,但是还没有进行正式介绍。在这篇文章中我们就了解一下 AddTo 这个 API。
其实字面意思上很容易理解,就是 添加到。
添加到哪里呢?
添加到 Unity 的 GameObject 或者 MonoBehaviour。

为什么要添加到 GameObject 或者 MonoBeaviour 呢?

是因为,GameObject 和 MonoBehaviour 可以获取到 OnDestroy 事件。也就是 GameObject 或者 MonoBehaviour 的销毁事件。

那么用这个销毁事件干嘛呢?

答案是用来 进行与 UniRx 进行销毁事件的绑定,也就是当 GameObject 或者 MonoBehaviour 被销毁时,去销毁与之绑定的UniRx 任务。
这就是 AddTo API 的作用。
其实用起来很简单,代码如下:
    
Observable . Timer ( TimeSpan . FromSeconds ( 1.0f ) . Subscribe ( ) . AddTo ( this ) ; // Or gameObejct
只要在事件流的最后添加 AddTo(this),当 this 所在的 GameObject 销毁时,这个 Timer 就会被销毁。

为什么会这样?

本质上, AddTo 是一个静态扩展关键字,它对 IDisposable 进行了扩展。
只要任何实现了 IDisposable 的接口,都可以使用 AddTo API,不管是不是 UniRx 的 API。
当 GameObject 销毁时,就会调用 IDisposable 的 OnDispose 这个方法。
很容易理解。

AddTo 能做什么?

有了 AddTo,在开启 Observable.EveryUpdate 时调用当前脚本的方法,就不会造成引用异常等错误,它使得 UniRx 的使用更加安全。
今天的内容就这些。

知识地图

转载请注明地址:凉鞋的笔记: liangxiegame.com

更多内容

  • QQ 交流群: 623597263
  • Unity 进阶小班 :
  • 主要训练内容:
  • 框架搭建训练(第一年)
  • 跟着案例学 Shader(第一年)
  • 副业的孵化(第二年、第三年)
  • 权益、授课形式等具体详情请查看 《小班产品手册》 :https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。
基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理流程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值