UniRx学习笔记(四)

本文介绍Unity游戏开发中UniRx库的定时与延时功能,通过Observable.Interval和Observable.Timer方法,实现炮塔自动开火及延时执行任务。此方法优于传统Update循环,提高代码效率。

介绍

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" ) ; } ) ; } }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值