1.什么是延迟函数

延时执行的函数,可以自己设定延时要执行的函数和具体延时的时间,是Monobehaviour基类中实现好的方法

1.Update定时器

在Update等刷新函数内计时,timer += Time.deltaTime 当时间达到预期,执行需要延时的方法。需要注意的是,增量时间Time.deltaTime是每帧都不同的浮点数。计时器不能用 == 去判断达成条件。需要用 > 或 >= 加一个标志位。以确保函数能执行到且只执行一次 Update在 Time.timeScale = 0 时会正常执行,但这时Time.deltaTime的值为0。

public class Test : MonoBehaviour
{public float timer = 0f;void Update(){timer += Time.deltaTime;if (timer >= 2){Func();timer = 0f; // 定时2秒}}void Func(){Debug.Log("每2秒执行一次");}
}

2.Invoke函数

Invoke是MonoBehaviour提供的函数,可以延时调用函数,但是,Invoke的调用是在运行时生效的,对于Func函数,很容易导致在代码审查阶段被误杀—函数删除后,编译不会报错。Invoke支持重复调用: InvokeRepeating("方法名",延时时长,每次调用间隔时长)

public class Test : MonoBehaviour
{private float delayTime = 2;private void Start(){Invoke("Func", delayTime);//InvokeRepeating("DelayFunc",delayTime,cdTime);}private void Func(){Debug.Log("延迟2s执行该函数");}
}

取消延时函数:

//取消延迟函数
//取消该脚本上的所有延时函数执行
CancelInvoke();//指定函数名取消
//只要取消了指定延迟 不管之前该函数开启了多少次 延迟执行 都会统一取消
CancelInvoke(nameof(DelayDoSomething));

3.协程 Coroutine

协程本质是迭代器

public class Test : MonoBehaviour
{private void Start(){StartCoroutine(Show());}private IEnumerator Show(){yield return new WaitForSeconds(2);Func();}private void Func(){Debug.Log("延时2s执行");}
}

4.DoTween 方法实现

DoTween函数中提供了一个方法dotween.to函数

 /// <summary>/// DOTweenTo延时回调/// </summary>/// <param name="delayedTimer">延时的时间</param>/// <param name="loopTimes">循环次数,0:不循环;负数:无限循环;正数:循环多少次</param>public void DOTweenToTest(float delayedTimer, int loopTimes){float timer = 0;//DOTwwen.To()中参数:前两个参数是固定写法,第三个是到达的最终值,第四个是渐变过程所用的时间Tween t = DOTween.To(() => timer, x => timer = x, 1, delayedTimer).OnStepComplete(() =>{print("调用函数");}).SetLoops(loopTimes);        }

Unity——延时执行的几种方法相关推荐

  1. 【Android】之【延时执行的几种方法】

    在Android日常开发中我们经常会有延时执行某个操作的需求,例如我们启动应用的时候,开始呈现一个引导页面,过了两三秒后,自动跳转到主界面:又如为了控制时序,需要延时执行等等. 下面整理下实现延时执行 ...

  2. IOS开发之延时执行的几种方法

    1.最直接的方法performSelector:withObject:afterDelay: 这种方法的缺点:每次要为延时写一个方法 2.使用类别,用BOLCK执行 [代码]c#/cpp/oc代码: ...

  3. IOS中延时执行的几种方式的比较

    本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...

  4. iOS:延时执行的三种方式

    延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObjec ...

  5. Qt延时处理的四种方法

    Qt延时处理的四种方法 这里提供四种方法: 1. 多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait( ...

  6. STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)

    STM32延时函数的三种方法:普通延时.SysTick 定时器延时(1.中断方式:2.非中断方式) 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ ...

  7. js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法

    本文为大家分享了在网页中JS函数自动执行常用方法,供大家参考,具体内容如下 一.JS方法 1.最简单的调用方式,直接写到html的body标签里面: 2.在JS语句调用: function myfun ...

  8. Unity镜头跟踪的四种方法

    Unity镜头跟踪的四种方法 新手代码 固定相机跟随,这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.C ...

  9. Java程序初始化启动自动执行的三种方法

    目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...

最新文章

  1. EF6学习笔记五:继承三策略
  2. Struts2拦截SQL注入
  3. python逻辑运算(not、and、or)总结_python逻辑判断 () not and or
  4. CRM campaign relationship read
  5. Linux下Nginx访问web目录提示403Forbidden
  6. 前端小白也能快速学会的博客园博客美化全攻略
  7. 微软取消被指下流的Windows 10更新方法
  8. transform、accumulate —— C++ 下的 MapReduce
  9. 消灭内存不能为read或written等错误
  10. 生成.pkl文件,读取.pkl文件的内容
  11. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a
  12. 【微信小程序】图库——(小程序篇)
  13. JQuery Ajax 参数含有特殊字符
  14. FreeBSD ZFS
  15. windows电脑给苹果电脑下ipa包
  16. 网络祭祀网站源码网上祭扫平台在线祭祀祭拜网上纪念馆扫墓phpcms网上墓园手机版源
  17. ACM-ICPC 2018 南京赛区网络预赛 J Sum(欧拉线性筛+思维)
  18. 17-1-数据处理思想和程序架构: 单片机stm32的flash保存数据优化方案(让擦写次数达到上百万至上千万次)
  19. 【WPF学习手记】InkCanvas绘制矩形和椭圆
  20. Echarts 开发静态数据模拟实现迁徙图步骤详解

热门文章

  1. 腾讯全资子公司 CODING 2021 届春季校招补录全面启动!
  2. 阿里云研究员马涛:龙蜥社区做对了两件事
  3. #define XXX do{ XXX } while(0) 为什么使用
  4. 教你如何用Python追踪快递信息
  5. 黑马程序员--Objective-C之--OC的初步体验
  6. 微信小程序周报(第九期)-极乐科技
  7. 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统
  8. 人工神经网络的算法原理,对人工神经网络的理解
  9. Excel快速对齐表格的中姓名(两个字姓名和三个字姓名对齐)
  10. C# Web Mvc 企业微信 回调