Unity——延时执行的几种方法

这篇具有很好参考价值的文章主要介绍了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函数文章来源地址https://www.toymoban.com/news/detail-508967.html

	/// <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——延时执行的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity学习笔记-延迟执行方法

    我辣鸡,不会用

    2024年02月06日
    浏览(26)
  • JavaScript:延迟访问和延时执行函数

    在java中线程有sleep函数可以延迟执行,但是在js中并没有这样的函数。 唯一有的就是setTimeout延迟执行函数,但是这个函数也是有很多坑。 场景:由于js是单线程异步执行的,当调用第三方API接口时,如果对方没有提供批量操作的接口,我们就需要多次请求相同的API,但是在

    2024年02月12日
    浏览(25)
  • Unity三种方法实现延迟执行

    1.定义一个返回值为 IEnumerator 的方法,在通过 StartCoroutine 开启这个协程即可。 注意这里需要使用的是 IEnumerato 而不是 IEnumerable 这两者的区别: IEnumerator :是一个迭代器接口 IEnumerable :是在IEnumerator基础上的一个封装接口,有一个GetEnumerator()方法返回IEnumerator StartCoroutine 的几

    2024年02月07日
    浏览(24)
  • SpringBoot 启动项目后执行方法的几种方式

    在项目开发中某些场景必须要用到启动项目后立即执行方式的功能,如我们需要去初始化数据到 redis 缓存、设置策略工厂,或者启动后读取相应的配置等,主要聊聊实现立即执行的几种方法。 这两者的实现方法一样,都是去继承相应的接口然后重写 run 方法即可,也都是 S

    2024年02月11日
    浏览(30)
  • 在Linux系统中执行.sh文件的几种方法

    cd到.sh文件所在的目录,然后执行./xxx.sh 【前提:该./sh文件要有可执行的权限,chmod u+x xxx.sh】 在.sh文件路径下直接使用sh加.sh文件名即可 【是否有可执行权限都可以】 注意事项:**用“./”加文件名.sh执行时,必须给.sh文件加x执行权限 ./home/test/shell/hello.sh,可以这样运行是

    2024年02月12日
    浏览(33)
  • Python: 导入或执行python源文件的几种方法

    目录 概要 方法1:import 方法2:exec() 方法3:os.system()         本文介绍python中导入或执行python源文件(通常是从另一个python源文件中)的几种常用方法。包括import, exec(), os.system()等。         第一种方式是使用import。         比如说有一个文件hello_world.py,内容如

    2024年02月15日
    浏览(28)
  • Unity读取Json的几种方法

    目录 存入和读取JSON工具 读取本地Json文件 1、unity自带方法 类名:JsonUtility          序列化:ToJson()                    反序列化:FromJson()         用于接收的JSON实体类需要声明 [Serializable]  序列化 实体类中的成员变量要是字段而不是属性{get;set;} 处理数组的话,外

    2024年01月21日
    浏览(29)
  • 实现延迟队列的几种方案

    方案一:基于SpringTask定时扫描数据库 步骤: 把发布的任务和时间保存到数据库中之后使用定时任务SpringTask来进行每五分钟执行一次 优点:可以把任务持久化保存到数据库中,不容易丢失任务 缺点:这种方案发布的时间可能会有误差,因为五分钟才执行一次,如果缩短时间

    2024年02月13日
    浏览(25)
  • 【图文详解】Unity存储游戏数据的几种方法

    在Unity中,常用的数据存储方法包括PlayerPrefs、ScriptableObject、JSON、XML和数据库等。 PlayerPrefs是Unity自带的一种简单的键值存储系统,适合存储一些简单的游戏数据。ScriptableObject是一种Unity类,可用于创建可序列化的对象并存储数据。JSON和XML是轻量级的数据交换格式,可以通过

    2023年04月08日
    浏览(40)
  • Windows Bat实现延时功能的几种常见方式

    在 bat 批处理中实现延时功能的几种常用方式 使用ping命令可以实现延时的效果,命令如下: -n 指定 ping 的次数,每次大概间隔1s, nul 将 ping 过程回显信息给屏蔽 ping 命令实现的延时,时间精度:大约1s,内存占用: ping 命令所占用空间 注意闭坑:ping 从第1次发出请求到接收

    2024年02月11日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包