22.UniRx专题(UniTask异步新特性)

什么是UniTask
一般什么情况下使用UniTask
UniTask和UniRx什么关系
UniTask API
UniTaskTracker 可视化任务


什么是UniTask

UniTask是基于C# 5的async和await异步定制的一套Unity优化的异步解决方案;需要Unity2017以上的版本,并且需要升级c#库,
但并不如UniRx项目提供的更为轻量级,可是UniTask拥有强大的async/await和unity进行交互。


一般什么情况下使用UniTask

一般来说首先想到的是网络相关的处理和资源加载需要用UniTask来处理,使用UniRx来处理感觉不够用;还有复杂的运算也可以使用UniTask,当作一个线程来使用就好。


UniTask和UniRx什么关系

没有任何关系,名字比较相似,作者可能认识吧?UniRx并不依靠UniTask来进行异步,UniTask没有UniRx一样可以使用;两种作用不同的解决方案,一个针对多任务处理,一个基于微异步的游戏内容;在GitHub上也是两个解决方案,UniRx的包中有集成UniTask
UniRx
UniTask


UniTask API

基于Unity AsyncOperation拓展的async&awaitAPI

所有Unity中的异步AsyncOperation都可以使用await来等待异步结果,包括AsyncLoadScene、AsyncLoadAsset、AsyncOperation

public class No22_UniTask : MonoBehaviour
{
   
    async void StartAsync()
    {
   
        // 加载资源
        var load = await Resources.LoadAsync<TextAsset>("1");
        // 加载场景
        await SceneManager.LoadSceneAsync("SampleScene")
        .ConfigureAwait(Progress.Create<float>(p => Debug.LogFormat("p:{0}", p)));
        // 网络请求
        UnityWebRequest req = UnityWebRequest.Get("http://www.baidu.com");
        var op = await req.SendWebRequest();
    }
    
    void Start()
    {
   
        StartAsync();
    }
}

UniTask API

UniTask.WaitUntil
UniTask.WaitWhile
UniTask.WaitUntilValueChanged
UniTask.SwitchToThreadPool
UniTask.SwitchToTaskPool
UniTask.SwitchToMainThread
UniTask.SwitchToSynchronizationContext
UniTask.Yield
UniTask.Run
UniTask.Lazy
UniTask.Void
UniTask.ConfigureAwait
UniTask.DelayFrame
UniTask.Delay(…, bool ignoreTimeScale = false, …) parameter


UniTask.WaitUntil
一直等待直到达到某种条件,才执行下面的代码

public class No22_UniTask : MonoBehaviour
{
   
    private bool mValue;

    async void StartAsync()
    {
   
        Debug.
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值