UniRx精讲(二):独立的 Update &UniRx 的基本语法格式

自力的 Update

在 UniRx 简介的时刻,笔者讲了一种对照贫苦的情形:就是在 MonoBehaviour 的 Update 中掺杂了大量相互无关的逻辑,导致代码异常不容易阅读。

这种情形我们平时在项目开发中异经常见,代码如下:

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

	if (B)
	{
		...
		if (D)
		{
			...
		}
		else {}
	}

	switch (C)
	{
		...
	}

	if (Input.GetMouseButtonUp(0))
	{
		...
	}
}

Update 方式中代码冗长,而且滋扰视线,异常影响阅读。

而使用 UniRx 则可以改善这个问题。

void Start()
{
	// A 逻辑,实现了 xx
	Observable.EveryUpdate()
			.Subscribe(_ => 
			{
				if (A)
				{
					...
				}
			}).AddTo(this);
	

	// B 逻辑,实现了 xx
	Observable.EveryUpdate()
			.Subscribe(_ =>
			{
				if (B)
				{
					...
					if (D)
					{
						...
					}
				else {}
				}
			}).AddTo(this);

	// C 逻辑,实现了 xx
	Observable.EveryUpdate()
			.Subscribe(_ =>
			{
				switch (C)
				{
					...
				}
			}).AddTo(this);

	// 鼠标点击检测逻辑
	Observable.EveryUpdate()
			.Subscribe(_ => {
			{
				if (Input.GetMouseButtonUp(0))
				{
					...
				}
			}).AddTo(this);
}

虽然在代码长度上没有任何改善,然则最起码,这些 Update 逻辑相互之间自力了。
状态跳转、延时等等这些经常在 Update 里实现的逻辑,都可以使用以上这种方式自力。

使用 UniRx 可以对我们工程中的代码举行了改善,而笔者接触 UniRx 之后,就再也没有使用过 Update 方式了。

不外以上的这种 UniRx 使用方式,是对照低级的,而这种使用方式,随着对 UniRx 的深入学习,也会逐渐镌汰,由于等我们入门之后,会学习更好的实现方式。

今天的内容就这些。

知识舆图

UniRx精讲(二):独立的 Update &UniRx 的基本语法格式

UniRx 的基本语法花样

在之前的两篇文章中,我们学习了 UniRx 的 Timer 和 Update 这两个 API,然则对代码的事情原理还没有举行过先容。在这篇文章中,我们就来试着明白一下 UniRx 的代码事情原理及 UniRx 的基本语法花样。

Jmeter(十) – 从入门到精通 – JMeter逻辑控制器 – 中篇(详解教程)

先搬出来第一篇文章中 Delay 的实现代码:

/****************************************************************************
 * http://liangxiegame.com liangxie
 ****************************************************************************/
 
using System;
using UniRx;
using UnityEngine;

namespace UniRxLesson
{
	public class DelayExample : MonoBehaviour
	{
		private void Start()
		{
			Observable.Timer(TimeSpan.FromSeconds(2.0f)).Subscribe(_ =>
			{
				Debug.Log("延时两秒"); 
				
			}).AddTo(this);
		}
	}
}

代码中的 Observable.XXX().Subscribe() 是异常经典的 UniRx 花样。只要明白了这种花样就可以看懂大部分的 UniRx 的用法了。

首先解决代码中的词汇问题:

  • Observable:可考察的,是形容词,它形容后边的词(Timer)是可考察的,我们可以直接把 Observable 后边的词明白成发布者。
  • Timer:定时器,名词,被 Observable 修饰,以是是发布者,是事宜的发送方。
  • Subscribe:订阅,是动词,它订阅谁呢?当然是前边的 Timer,这里可以明白成订阅者,也就是事宜的接收方。
  • AddTo:添加到,这个我们暂时不用明白得太深刻,只需要知道它是与 MonoBehaviour 举行生命周期绑定即可。

以上的代码,连起来则是:可被考察(监听)的.Timer().订阅()
理顺了之后应该是:订阅可被考察的定时器。

其观点关系很容易明白。

  • Timer 是可考察的。
  • 可考察的才气被订阅。
Observable.XXX().Subscribe();

这行代码我们可以明白为:可被考察(监听)的 XX,注册。

以上笔者从发布者和订阅者这个角度举行了简朴的先容,以便人人明白。
然则 UniRx 的侧重点,不是发布者和订阅者这两个观点若何使用,而是事宜从发布者到订阅者之间的历程若何处置。
以是这两个点不主要,主要的是两点之间的线,也就是事宜的通报历程。

这里先不说得太深入,在入门之后,会用很大的篇幅去深入先容这些观点的。

今天的 UniRx 的基本语法花样的先容就到这里,我们下一篇再见,拜拜~

知识舆图

UniRx精讲(二):独立的 Update &UniRx 的基本语法格式

更多内容
QFramework 地址:https://github.com/liangxiegame/QFramework
QQ 交流群:623597263
凉鞋的主页:https://liangxiegame.com/zhuanlan
关注民众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/16128.html