Unity三种方法实现延迟执行

这篇具有很好参考价值的文章主要介绍了Unity三种方法实现延迟执行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.计时器

1.定义一个float 的变量
2.然后逐帧减去Time.DeltaTime 的值,直到最后小于0
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

class Test : MonoBehaviour{
	private float timer = 2f;
	
	void Update(){
		if(timer < 0){
			//Doing Something...
		}else{
			timer -= Time.DeltaTime;
		}
	}
}

1.协程

1.定义一个返回值为 IEnumerator 的方法,在通过StartCoroutine开启这个协程即可。

注意这里需要使用的是IEnumerato而不是IEnumerable这两者的区别:

  • IEnumerator:是一个迭代器接口
  • IEnumerable:是在IEnumerator基础上的一个封装接口,有一个GetEnumerator()方法返回IEnumerator

StartCoroutine 的几种重载方法

  • StartCoroutine(string methodName): 这种只适用于没有参数的情况
  • StartCoroutine(IEnumerator routine):通过方法的形式调用
  • StartCoroutine(string methodName, object values) :适用于有参数的使用,并在后面依此传入参数的值


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

class Test : MonoBehaviour{
	void Start(){
		StartCoroutine(Func(2.0f));
		//StartCoroutine("Func", 2.0f)
	}

	IEnumerator Func(float delay){
		yield return new WaitForSeconds(delay); //程序在这里等待delay长的时间后,再去往下执行
		//Doing Something...
	}
}

yield的补充

  • yield return null:暂停协程等待下一帧继续执行

  • yield return 0或其他数字:暂停协程等待下一帧继续执行

  • yield return new WairForSeconds(时间):等待规定时间后继续执行

  • yield return StartCoroutine("协程方法名"):开启一个协程(嵌套协程)


  • yield return GameObject; 当游戏对象被获取到之后执行
  • yield return new WaitForFixedUpdate():等到下一个固定帧数更新
  • yield return new WaitForEndOfFrame():等到所有相机画面被渲染完毕后更新
  • yield break; 跳出协程对应方法,其后面的代码不会被执行

3.Invoke调用

Invoke也是Unity中一种延迟调用机制,但是被调用的函数不能有参数

Invoke的常用两种方法文章来源地址https://www.toymoban.com/news/detail-469362.html

  • Invoke(string methodName, float time) : 延迟time秒之后调用methodName函数
  • InvokeRepeating(string methodName, float time, int repeatRate):重复repeatRate次调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

class Test : MonoBehaviour{
	void Start(){
		Invoke("Func", 2);
		//InVoke("Func", 2 ,3);
	}

	void Func(float delay){
		Debug.Log("Doing Something... ")
		//Doing Something...
	}
}

到了这里,关于Unity三种方法实现延迟执行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity开发小技巧(一)、计时器Timer

    Time.deltaTime为游戏每帧执行的时间,该方法一般用加法来计时,原理是利用nity中Update方法的每帧执行的时间,按钮按下后不断累加,大于计时时间时关闭,可根据实际使用情况进行加减,以下给出加法操作。 演示结果: Time.time为从游戏运行开始到现在的时间,该方法一般用

    2024年02月06日
    浏览(47)
  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(72)
  • Qt实现计时器

    一、样图 二、代码 mainwidow.h mainwindow.cpp main.cpp ui_mainwindow.h

    2024年02月07日
    浏览(39)
  • Unity快速入门教程-制作一个简易版的计时器Time.deltaTime

    制作游戏的时候,可能会需要到一个计时器,本篇文章附完整计时器代码 本文将简单介绍 一次计时器 和 循环计时器 的代码 Time.deltaTime是帧与帧相减出来的,即 Time.deltaTime=后一帧时间-前一帧时间 ,计算结果由你的电脑配置而定,不是固定值。由于Time.deltaTime的结果是由后一

    2024年02月12日
    浏览(51)
  • Redis的实现四:事件循环和计时器

           我们的服务器缺少了一个 内容 : 超时 。每个网络应用程序都需要处理超时,因为网络的另一边可能会消失。不要只进行持续的IO操作,如读/写需要超时,但启动空闲的TCP连接也是一个好主意。要实现超时,必须修改事件循环,因为轮询是唯一被阻塞的东西。 我们的

    2024年01月16日
    浏览(47)
  • 嵌入式单片机——60秒计时器的实现

    1.设计秒计时器,要求实现60秒计时,用2位LED数码管显示。 2.按键K1,实现秒表的停止和启动。

    2024年02月03日
    浏览(49)
  • Vivado设计秒表计时器实现00分00.00秒到59分59.99秒的计时(verilog语言)

    目录 0.写在最前 一、课程设计要求: 三、名词说明解释 四、Vivado代码实现部分 五、仿真测试程序 六、约束文件 七、开发板结果展示 八、关于改进/扩展 ① 增加秒与 0.1s 之间的分隔符“.”号的点亮: ② 取消 0.1s,0.01s 显示,增加小时形成“时分.秒”的显示方式 ③ 其它改

    2024年02月06日
    浏览(57)
  • Java 多线程6——计时器Timer的使用 + 详细代码模拟实现 + 代码优化

    本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下! 本篇文章为大家带来的仍然是多线程编程,计时器是许多场景都会应用到的一个非常方便快捷实用的类。 🦉定时器,顾

    2024年02月04日
    浏览(50)
  • 14、计时器、定时器设计与应用

    掌握同步四位二进制计数器 74LS161 的工作原理和设计方法 掌握时钟/定时器的工作原理与设计方法 任务 1:采用行为描述设计同步四位二进制计数器 74LS161 任务 2:基于 74LS161 设计时钟应用 1.创建工程并创建 Verilog 文件 建立 HDL 类型的工程 My74LS161,创建 Verilog 文件 My74LS161,

    2024年02月03日
    浏览(54)
  • vue-element-table表格实现每一条数据绑定定时器实现倒计时或者持续时间

    前言 最近在开发中遇到一个需求,每一条数据前端计算处理时间,或者是倒计时时间。 第一表格不可能展示所有数据,所以我们需要当前时间和数据库开始时间获取一个初始值。 第二我们需要把定时器持续时间绑给每一条数据中,方便展示,和操作时候传递给后端存储。

    2024年01月20日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包