UniRx第一季学习(二) ------ UniRx 的基本语法格式+Update

课程地址 : http://www.sikiedu.com/course/271

凉鞋大大的,可以的话大家多支持一波~


一.UniRx 的基本语法格式

 private void Start()
        {
            Observable.Timer(TimeSpan.FromSeconds(5.0f))
                      .Subscribe(_ =>
                      {
                          Debug.Log("do something");
                      });
        }

Observable.XXX().Subscribe() 是⾮常典型的 UniRx 格式。
只要理解什么意思就可以看懂⼤部分的 UniRx 的⽤法了。

⾸先解决词汇问题:
Observable: 可观察的,形容词,形容后边的词(Timer) 是可观察的,我们可以粗暴地把 Observable 后
边的理解成发布者。
Timer: 定时器,名词,被 Observable 描述,

连起来则是:可被观察(监听)的.Timer().订阅()
顺下来应该是:订阅可被观察的定时器。
其概念关系很容易理解。
•     Timer 是可观察的。
•     可观察的才能被订阅

Observable.XXX().Subscribe();
可被观察(监听)的 XX,注册。
以上从发布者和订阅者这个⻆度来进⾏的介绍,以便⼤家理解。
但是 UniRx 的侧重点,不是发布者和订阅者这两个概念如何使⽤,⽽是事件从发布者到订阅者之间的
过程如何处理。
所以两个点不重要,重要的是两点之间的线,也就是事件的传递过程。

二.独立的Update

 在写代码的过程中经常会在MonoBehaviour 的 Update 中掺杂了⼤量互相⽆关的逻辑,导致代码⾮常不容易阅读

private void Update()
{
   if (A)
   {
     ...
   }
}

代码冗⻓,⽽且⼲扰视线。UniRx 可以改善这个问题。
 

enum ButtonState
        {
            None,
            Clicked,
            DoubleClicked
        }


        void Start()
        {
            ButtonState buttonState = ButtonState.None;

            bool buttonClicked = false;

            // 监听鼠标左键
            Observable.EveryUpdate()
                      .Subscribe(_ =>
                      {
                          if (Input.GetMouseButtonDown(0))
                          {
                              Debug.Log("left mouse button clicked");
                              buttonClicked = true;
                          }
                      });


            // 监听鼠标右键
            Observable.EveryUpdate()
                      .Subscribe(_ =>
                      {
                          if (Input.GetMouseButtonDown(1))
                          {
                              Debug.Log("right mouse button clicked");
                              buttonClicked = true;
                          }
                      });

            // 监听状态 
            if (buttonClicked && buttonState == ButtonState.None)
            {
                buttonState = ButtonState.Clicked;
            }

        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值