Unity——延时执行的几种方法
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——延时执行的几种方法相关推荐
- 【Android】之【延时执行的几种方法】
在Android日常开发中我们经常会有延时执行某个操作的需求,例如我们启动应用的时候,开始呈现一个引导页面,过了两三秒后,自动跳转到主界面:又如为了控制时序,需要延时执行等等. 下面整理下实现延时执行 ...
- IOS开发之延时执行的几种方法
1.最直接的方法performSelector:withObject:afterDelay: 这种方法的缺点:每次要为延时写一个方法 2.使用类别,用BOLCK执行 [代码]c#/cpp/oc代码: ...
- IOS中延时执行的几种方式的比较
本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...
- iOS:延时执行的三种方式
延时执行的三种方式:performSelectorXXX方法.GCD中延时函数.创建定时器 第一种方式:NSObject分类当中的方法,延迟一段时间调用某一个方法 @interface NSObjec ...
- Qt延时处理的四种方法
Qt延时处理的四种方法 这里提供四种方法: 1. 多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait( ...
- STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)
STM32延时函数的三种方法:普通延时.SysTick 定时器延时(1.中断方式:2.非中断方式) 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ ...
- js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法
本文为大家分享了在网页中JS函数自动执行常用方法,供大家参考,具体内容如下 一.JS方法 1.最简单的调用方式,直接写到html的body标签里面: 2.在JS语句调用: function myfun ...
- Unity镜头跟踪的四种方法
Unity镜头跟踪的四种方法 新手代码 固定相机跟随,这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 using UnityEngine; using System.C ...
- Java程序初始化启动自动执行的三种方法
目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...
最新文章
- EF6学习笔记五:继承三策略
- Struts2拦截SQL注入
- python逻辑运算(not、and、or)总结_python逻辑判断 () not and or
- CRM campaign relationship read
- Linux下Nginx访问web目录提示403Forbidden
- 前端小白也能快速学会的博客园博客美化全攻略
- 微软取消被指下流的Windows 10更新方法
- transform、accumulate —— C++ 下的 MapReduce
- 消灭内存不能为read或written等错误
- 生成.pkl文件,读取.pkl文件的内容
- 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a
- 【微信小程序】图库——(小程序篇)
- JQuery Ajax 参数含有特殊字符
- FreeBSD ZFS
- windows电脑给苹果电脑下ipa包
- 网络祭祀网站源码网上祭扫平台在线祭祀祭拜网上纪念馆扫墓phpcms网上墓园手机版源
- ACM-ICPC 2018 南京赛区网络预赛 J Sum(欧拉线性筛+思维)
- 17-1-数据处理思想和程序架构: 单片机stm32的flash保存数据优化方案(让擦写次数达到上百万至上千万次)
- 【WPF学习手记】InkCanvas绘制矩形和椭圆
- Echarts 开发静态数据模拟实现迁徙图步骤详解