介绍
UniRx中的静态方法分为两类,一类是Rx框架中共有的方法,因为UniRx可以算得上是Rx框架的延伸,是具有Unity特点的Rx框架。本章中主要介绍UniRx中常用的静态方法。
Observable.Interval
Observable.Interval的功能是:每隔一段时间就执行Subscribe中的操作,使用起来非常简便,常用于CD计时。 在示例代码中,实现了一个简单的炮塔功能:当玩家靠近炮塔时,炮塔开火;玩家远离炮塔,停火。 在代码中使用了Where操作符,这个操作符就是Linq中的where。 和使用Update相比,使用Observable.Interval和where结合,避免了在Update中去撰写开火的代码,可以使代码更加高效(真的不要Update中塞太多东西)。 和协程相比,Observable.Interval会自动开辟了一个“协程”,不必自己另外在写一个协程;同时也可以将一些变量,如代码中的int i直接作为临时变量放在OpenFire()中,而不必和cdTime 等重要的参数放在一起,使代码更加简洁。
//炮塔开火
public
class
Chapter4CodeSample1
:
MonoBehaviour
{
public
float
cdTime
=
1
;
public
bool
playerApprouch
;
// Start is called before the first frame update
void
Start
(
)
{
OpenFire
(
)
;
}
public
void
OpenFire
(
)
{
int
i
=
1
;
Observable
.
Interval
(
TimeSpan
.
FromSeconds
(
cdTime
)
)
//Where是过滤操作符,抓取playerApprouch为true的情况
//下一章仔细讲解操作符
.
Where
(
x
=>
playerApprouch
)
.
Subscribe
(
x
=>
{
print
(
"open fire "
+
i
+
" times"
)
;
i
++
;
}
)
;
}
}
Observable.Timer
Observable.Timer比Interval更加简单,就是延时执行一次。
public
class
Chapter4CodeSample2
:
MonoBehaviour
{
// Start is called before the first frame update
void
Start
(
)
{
Observable
.
Timer
(
TimeSpan
.
FromSeconds
(
1
)
)
.
Subscribe
(
x
=>
{
print
(
"delay perform"
)
;
}
)
;
}
}
本文介绍Unity游戏开发中UniRx库的定时与延时功能,通过Observable.Interval和Observable.Timer方法,实现炮塔自动开火及延时执行任务。此方法优于传统Update循环,提高代码效率。
1141

被折叠的 条评论
为什么被折叠?



