18.UniRx专题(Rx Property属性数据响应器)

本文详细介绍了如何使用UniRx库创建属性响应器,包括ReactiveProperty、ReactiveDictionary、ReactiveCollection和ReactiveCommand,以实现实时数据更新和变更通知。通过示例代码展示了如何使用这些响应器来提高代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成

什么是属性响应器
ReactiveProperty<>
ReactiveDictionary<>
ReactiveCollection<>
ReactiveCommand<>
ReactiveProperty派生基础类型


什么是属性响应器

一般来说,我们需要对一个数据进行监听的时候,使用回调来通知其变化之后的结果;
因此,我们在编写回调的时候会比较谨慎,回调的数据存在必要的需求;
有些时候我们需要判断一个数据的变化结果,然而结果只是当下用到,不要定义回调给第三方需求来使用,
那么,一般的处理方式和回调都不是很好的解决方法,类如:判断一个敌人是否死亡了;
你的做法是,大致以下几种:在Update方法里面来判定,使用Manager来管理,其本质和Update差不多;
使用回调来通知其结果?
使用UniRx,万物都是观察者对象,可以很好的解决这类数据及时刷新通知结果的需求,
在UniRx中判定敌人死亡的一个处理方式:

public class No18_RxProperty : MonoBehaviour
{
   
    private bool mIsDead; 

    void Start()
    {
   
        ReactiveProperty<int> hp = new IntReactiveProperty(100);

        hp.Subscribe(Next, Error, Complete);

        Observable.EveryUpdate().Subscribe(_ =>
        {
   
            if (mIsDead == false) hp.Value -= 1;
        });
    }

    void Next(int hp)
    {
   
        mIsDead = hp < 1;
        Debug.LogFormat("isDead:{0}", mIsDead);
    }

    void Error(Exception ex)
    {
   
        Debug.LogException(ex);
    }

    void Complete()
    {
   
        Debug.LogFormat("Complete");
    }
}


ReactiveProperty 轻量级属性响应器

ReactiveProperty是所有基础类型属性响应器的基类

使用方法

// 构建属性响应器
ReactiveProperty<int> hp = new ReactiveProperty<int>();
// 设置默认值
hp.Value = 100;
// 订阅通知结果
hp.Subscribe(Next, Error, Complete);

其中T可以指定任意类型
默认值可以在构建的时候设置

输出结果
在这里插入图片描述
代码示例

public class No18_RxProperty : MonoBehaviour
{
   
    private bool mIsDead; 

    void Start()
    {
   
        // 构建属性响应器
        ReactiveProperty<int> hp =
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值