当前位置: 首页 > news >正文

【Unity】R3 CSharp 响应式编程 - 使用篇(二)

一、通用的事件监听用法

using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{//	默认会调用1次public          SerializableReactiveProperty<int> serializableReactiveProperty;//	默认会调用1次public readonly ReactiveProperty<int>             reactiveProperty = new ReactiveProperty<int>();private void Start(){this.serializableReactiveProperty.Subscribe((value) => { Debug.LogError($"Unity Serializable Value Change: {value}"); });this.reactiveProperty.Subscribe((value) => { Debug.LogError($"Reactive Property Value Change: {value}"); });//	执行到规定帧数后回调,下文是到 999 帧后回调。R3.Observable.TimerFrame(999).Subscribe(value =>{Debug.LogError($"{Time.frameCount}");});//	500ms 回调内容R3.Observable.Timer(TimeSpan.FromMilliseconds(500)).Subscribe(_ => { Debug.LogError($" 500ms 回调一次"); });//	立即调用 2 次,每次的值是 1R3.Observable.Repeat(1, 2).Subscribe(value => { Debug.LogError($"立即调用 2 次, 每次的值是:{value}"); });//	间隔 1000ms 调用, 可以尝试使用 ReactiveProperty 额外记录一个值,目前还不知道怎样监听调用次数, 可使用 Concat 尝试R3.Observable.Interval(TimeSpan.FromMilliseconds(1000)).Subscribe(_ =>{this.reactiveProperty.Value += 1;});//	双击,如果第二次按键在第一次按键的 250ms 的间隔内,那就是双击Observable<Unit> clickStream = R3.Observable.EveryUpdate().Where(_ => Input.GetMouseButtonDown(0));clickStream.Chunk(clickStream.Debounce(TimeSpan.FromMilliseconds(250))).Where(xs => xs.Length >= 2).Subscribe(_ => Debug.Log("Mouse double click detected!"));//	连接两个 Observablevar concat1 = R3.Observable.Timer(TimeSpan.FromMilliseconds(1000));R3.Observable.Concat(concat1, concat1).Subscribe(_ =>{Debug.LogError("Concat: 连接两个 Observable, 按顺序执行");});//	连接两个 Observablevar merge1 = R3.Observable.Timer(TimeSpan.FromMilliseconds(1000));R3.Observable.Merge(merge1, merge1).Subscribe(_ =>{Debug.LogError("Merge: 合并两个 Observable, 并行执行");});}}}
http://www.xdnf.cn/news/877915.html

相关文章:

  • BugKu Web渗透之bp
  • 6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)
  • 制造业数智化:R²AIN SUITE 如何打通提效闭环
  • 苹果企业签名撤销
  • 滑动智能降级:Glide优化加载性能的黑科技
  • Python Day43
  • vue封装gsap自定义动画指令
  • 计算机系统结构-第5章-监听式协议
  • @Minikube安装、配置与应用部署
  • 11. MySQL事务管理(上)
  • C++11新特性(3)
  • Java高级 | 【实验四】Springboot 获取前端数据与返回Json数据
  • DeepSeek进阶应用(三):生成单词卡片高效学英语(可用于开发web应用、app等)
  • MySQL 表的内连和外连
  • 浮动测量技术在现代电力电子系统中的关键作用
  • 每日八股文6.4补
  • Day12
  • GQA(Grouped Query Attention):分组注意力机制的原理与实践《二》
  • 如何选择合适的分库分表策略
  • 前端表单验证进阶:如何使用 jQuery.validator.addMethod() 编写自定义验证器(全是干货,建议收藏)
  • 用布局管理器grid实现计算机界面
  • Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】
  • VBA中类的解读及应用第二十四讲:把源数据赋给类利用类完成查找
  • 【AI News | 20250604】每日AI进展
  • Markdown基础(1.2w字)
  • OPC UA 知识概述
  • 行业年终工作总结汇报PPT模版分享
  • 并发编程的问题与管程
  • LangChain深度解析:LLM应用开发利器
  • Redis常见使用场景解析