关于unity延迟执行网上也有很多了,我这里只是封装下,让写代码变得更加优雅,使用更加方便。
一个问题想要表述清楚,读者也能看明白,无非3个点:What(要说的是什么),How(怎么用你这个东西?什么情况下有用?),Why(为什么要这么做,这么做有啥好处?我不这么用可以不可以?等等)
首先来看 what,直接上代码了

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public static class StaticUtils
{public static Coroutine DelayToDo(this MonoBehaviour mono, float delayTime, Action action, bool ignoreTimeScale = false){Coroutine coroutine = null;if (ignoreTimeScale){coroutine = mono.StartCoroutine(DelayIgnoreTimeToDo(delayTime, action));}else{coroutine = mono.StartCoroutine(DelayToInvokeDo(delayTime, action));}return coroutine;}public static IEnumerator DelayToInvokeDo(float delaySeconds, Action action){yield return new WaitForSeconds(delaySeconds);action();}public static IEnumerator DelayIgnoreTimeToDo(float delaySeconds, Action action){float start = Time.realtimeSinceStartup;while (Time.realtimeSinceStartup < start + delaySeconds){yield return null;}action();}public static bool IsNullOrEntry(this string str){return String.IsNullOrEmpty(str);}
}

代码也有注释,应该很清楚了,,,这里要创建一个static的类,这样的类也算是一个工程中必要的工具类了吧,可以添加自己的扩展工具方法,使自己的代码写的更加流畅,,,嗯,(代码最后送大家一个函数,怎么用呢?平时我们判断一个字符串是null还是“”,怎么判断的呢,每次都要string.IsNullOrEmpty(str),巨麻烦,现在你只用str.IsNullOrEmpty(),代码书写起来流畅无打断,是不是很安逸)
好吧,回归正题,如何用(How)?
用就很简单了,在继承了MonoBehaviour的脚本方法里,直接:

  this.DelayToDo(1.0f, () =>{//要搞的事情});

有哪些使用的场景(情况)的呢?
如要等一个特效完了,才显示界面等,反正就是各种等待都行。

这里DelayToDo返回了Coroutine ,所以要停止携程也很简单 调用StopCoroutine(coroutine ),传入刚的返回就行了。因为使用的是协程,所以他的生命周期和所挂脚本的gameobjtect是一致的,如果销毁或隐藏了gameobject,该延迟就会停止执行。
如果要使用全局的(无论一个界面还是物体被销毁或隐藏了该延时执行都要继续进行下去)的话,你可以建一个一直的存在的物体挂一个脚本,用这个脚本去调用上面DelayToDo。还有一种方便的方式是,如果你的项目中使用Dotween的话,可以使用:

  DOVirtual.DelayedCall(1.0f, () =>{//要搞的事情});

最后,来说各种Why,
这么做有啥好处?
好处是,写代码方便,提高效率,延迟执行一句代码搞定,能使用 . 的就使用 . 。这样代码看起来也简洁很多。
我不这么做行不行?我有更好的方法?
可以,当然可以。。那个,如果你有好的方法方式,还请留言给出,大家一起交流。

unity 延迟等待执行相关推荐

  1. (转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

    http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不 ...

  2. Selenium的延迟等待

    2019独角兽企业重金招聘Python工程师标准>>> Selenium的延迟等待分为 显式等待(Explicit Wait) & 隐式等待(Implicit Wait). ...

  3. unity延迟执行下一行代码_Python代码在Linux环境下执行错误异常

    import happybase import time from multiprocessing import Pool# 设置IP地址 hbase_ip = '20.88.0.84' start_ ...

  4. Unity延迟几秒执行一个方法小工具

    using UnityEngine; using System.Collections; using UnityEditor; using System.Collections.Generic; // ...

  5. unity控制程序等待_Unity 中的协同程序

    今天咱就说说,协同程序coroutine.(这文章是在网吧敲的,没有unity,但是所有结论都被跑过,不管你信得过我还是信不过我,都要自己跑一下看看,同时欢迎纠错) 先说说啥是协程:协同程序是一个非常 ...

  6. 命令行开启一个unity实例和执行其中的脚本方法的使用和注意

    工作中有一个需求,就是将unity工程放在服务器上,自动执行一些打包任务.这时候就需要启动一个没有GUI的unity,并自动执行其中的打包脚本. 1.官网的说明: 官网API 2.一般的调用方法: 2 ...

  7. mysql 延迟等待函数_sqlserver waitfor time 延迟函数的用法

    SQL有定时执行的语句 WaitFor,可以写到一个存储过程中再执行一次 语法:WaitFor{Delay 'time'|Time 'time} Delay后面的时间为延迟多少时间执行 Time后面的 ...

  8. python协程等待执行完成_当循环运行时,如何运行协同程序并等待同步函数的结果?...

    同步等待异步协同程序 如果一个异步事件循环已经通过调用loop.run_forever运行,它将阻塞执行线程,直到loop.stop被调用[请参阅docs].因此,同步等待的唯一方法是在一个专用线程上 ...

  9. python等待执行完毕 再继续执行_如何等待一个函数内部异步执行完毕再执行另外一个函数?...

    问题描述 有两个函数f1和f2,其中f1中有异步操作,执行完f1接着执行f2,因为f1内部有异步操作,所以会先执行完f2,再执行f1里的异步,如何等待f1异步执行完再执行f2. 备注:执行方式为f1( ...

最新文章

  1. ASP.NET2.0轻松搞定统计图表【月儿原创】
  2. Python中的继承
  3. mysql sql文件太大_MySQL导入的sql脚本文件过大解决方案
  4. python和C语言互相调用的几种方式
  5. 微信小程序 之 请求函数封装
  6. JavaScript中的原型prototype及原型链
  7. Android注册BroadcastReceiver的两种办法及其区别
  8. 蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率
  9. python实现接口自动化的视频_python实现头条项目接口自动化测试实战
  10. GitHub Universe 2020 强势登陆,GitCode直播已上线
  11. 超 10000 名开发者在追的技术栏目,你绝不能错过!
  12. 环境安装_Python教程 Python环境安装
  13. CDH中配置hive支持update delete
  14. 一起学ORBSLAM2(6)ORBSLAM中的特征匹配
  15. OA系统审批流程思路梳理
  16. mysql uroot pg t_【原创】MySQL和PostgreSQL 导入数据对比
  17. 易到要在网约车市场突围并不容易
  18. 销量预测模型案例实战
  19. 三十岁了学python还可以吗-三十岁了还可以学编程吗?只要你想,只要你做,什么时候都不晚...
  20. 视频会议行业应用软件分析

热门文章

  1. 华为hn–wx9x笔记本电脑_华为荣耀9怎样无线连接电脑。
  2. PCB层里面这些知识你都懂吗?
  3. weblogic10.3压测BEA-000449的调整
  4. [数论 反演] BZOJ 4833 最小公倍佩尔数
  5. linux内核添加系统调用(详细)
  6. USACO Training Section 1.3 Calf Flac 解题报告AC代码
  7. php随机调用百度背景图片,如何在网页中调用岁月小筑随机图片API——背景图片...
  8. (转)使用Vernam(维尔南/弗纳姆)算法实现文件加密解密[C#]
  9. 人工智能人才缺口达500万,北京大学、天津大学、复旦大学、深圳大学等多所高校布局人工智能人才培养
  10. matlab中标幺值,标幺值概述