当前位置: 首页 > news >正文

异步编程学习

UniTask

UniTask
访问UniTask的GitHub的主页可以直接下载unity Package进行导入,或者通过 Package Manager导入,导入完成之后根据文档加一下 宏定义“UNITASK_DOTWEEN_SUPPORT”
这样就可以正常的控制DoTween了

在这里插入图片描述

2.UniTask 的简单使用

// UniTask 是可以作用到DoTween上的 
using Cysharp.Threading.Tasks;
using DG.Tweening;
using System;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;public class UnitaskCancel : MonoBehaviour
{//当我们点击取消按钮的时候 会发送一个取消指令,接收到指令的UniTask都会取消// CacellationTokenSource 是原生的类private CancellationTokenSource cts = new CancellationTokenSource();[SerializeField] private Button cancelButton;[SerializeField] private Transform cube;private UniTask[] cancelTaskArray;private void Awake(){cancelButton.onClick.AddListener(cancel);InitUniTask();}private async void InitUniTask() {UniTask one = cube.DOMove(new Vector3(5, 0, 5), 2f).SetEase(Ease.InOutQuart).ToUniTask(cancellationToken:cts.Token);UniTask two = cube.DOScale(new Vector3(2, 2, 2), 5f).SetEase(Ease.InOutQuart).ToUniTask(cancellationToken: cts.Token);UniTask three = cube.DORotate(new Vector3(90, 90, 90), 2f).SetEase(Ease.InOutQuart).OnComplete(()=>{Debug.Log("CompleteDORotate");}).ToUniTask(cancellationToken: cts.Token);cancelTaskArray = new UniTask []{ one, two,three };// 等待全部的任务完成才会继续执行// 注意这里的任务 是一起开始的,如果想要一个一个完成 需要直接await 具体的Unitaskvar waitAll = UniTask.WhenAll(cancelTaskArray);//await UniTask.Delay(TimeSpan.FromSeconds(1f)) ;await waitAll;Debug.Log("Complete");}private void InitDotween() {cube.DOScale(new Vector3(2, 2, 2), 5f).SetEase(Ease.InOutQuart);cube.DORotate(new Vector3(90, 90, 90), 2f).SetEase(Ease.InOutQuart);cube.DOMove(new Vector3(5, 0, 5), 2f).SetEase(Ease.InOutQuart);}private void cancel() { cts.Cancel();}
}

下一篇 将会使用UniTask完成一个小案例


http://www.mrgr.cn/news/20108.html

相关文章:

  • 应用层协议HTTP
  • 钢琴灯品牌排行榜前十名有哪些?钢琴灯品牌排行榜前十名
  • 【ubuntu使用笔记】nvme磁盘挂载失败问题记录
  • 九盾叉车U型区域警示灯,高效照明和安全警示
  • Github配置ssh key
  • C1-2 ABB二次SDK开发——手把手教登录对应的机器人控制器(图片引导操作)登录机器人控制器和刷新机器人列表
  • vue中oninput和@input区别
  • 5.关于Deformable Detr
  • 【计算机视觉前沿研究 热点 顶会】ECCV 2024中目标检测有关的论文
  • 数据库编程——sqlite3
  • Android ADB实现COC夜世界自动打资源
  • 某云彩SRM2.0任意文件下载漏洞
  • 【附指定环境安装包】在Visual Studio Code中配置Python环境!
  • OpenAI 联合创始人的 AI 安全公司 SSI 筹集 10 亿美元资金|TodayAI
  • Linux - Linux安装部署Maven以及环境变量配置
  • 基于Pytorch深度学习——Transformer论文讲解/代码实现
  • 园区/高能耗企业 水-电-气-热-油采集系统-能源管理系统
  • 在 Ubuntu 下通过 Docker 部署 Minecraft 服务器
  • Java 面试题:从源码理解 ThreadLocal 如何解决内存泄漏 ConcurrentHashMap 如何保证并发安全 --xunznux
  • 陪诊志愿服务正在开展,喜鹊医疗打造国内首家陪诊聚合平台