dotween unity 延时_unity延时功能的几种实现
原文:https://www.cnblogs.com/xifarm/p/invoke.html
在Unity3D中,新建的脚本会默认继承MonoBehaviour,其中Update函数会被引擎自动调度,如在我的电脑上,Update函数被调用的周期为0.012s。
那么Unity3D中,仅有通过Update函数来实现延时功能吗? 还有无其他的实现呢?
怎么才能让一个界面只显示1秒之后 然后再执行其他的操作~
比如 游戏的胜利界面 只让他显示一秒 然后执行其他操作
答案是有的,下面就用过的几种延时功能(定时器)一一列出来:
延时功能
是否继承MonoBehaviour
备注
Update函数
是
配合使用的函数:
Timer.timer
Invoke
是
配合使用的函数:
CancelInvoke
InvokeRepeating
IsInvoking
Coroutine
是
配合使用的函数:
StartCoroutine
StopAllCoroutines
StopCoroutine
DOTween (HOTween v2)
否
VisionTimer.VP_Timer
否
下面的几个例子,我们在ShowA函数中,延时5s调用ShowB函数,通过代码看看各个实现方法的异同。
为了方便,我仅截取部分关键代码,是否继承MonoBehaviour等自行添加即可。
Update函数 实现定时器
float m_timer = 0; void Update () { m_timer += Time.time; if (m_timer >= 5) { ShowB();
m_timer = 0; }
} private void ShowB() {
}
Update函数实现定时器,几乎是学习Unity3D必修的功课。 但是,在实战项目中需要维护m_timer这个变量,且从设计角度看,代码写得有些不整齐。
Invoke函数 实现定时器
GameController.Get().CancelInvoke();
GameController.Get().Invoke("ShowB", 5f);
private void ShowB()
{
game.ShowCardInTurn();
}
Invoke是MonoBehaviour提供的函数,可以延时调用函数,且可以通过CancelInvoke控制调度器的停止。 但是,Invoke的调用是在运行时生效的,对于ShowB函数,很容易导致在代码审查阶段被误杀—函数删除后,编译不会报错,你可能会误认为这个函数是废弃的函数。
Coroutine 协成 实现定时器
private IEnumerator ShowA() { yield return new WaitForSeconds(5);
ShowB(); } private void ShowB() {
}
使用协成的WaitForSeconds可以实现定时器,使用起来比较简单。
DOTween 实现定时器
DOTween动画插件,是在Unity 4.6时代,为了弥补UGUI无动画脚本的先天不足而云起的商业插件,当然雨松MoMO的《UGUI研究院之界面中使用DoTween(七)》对普及DOTWeen功不可没。
private void ShowA() { GameObject go;
go.transform.DOMoveZ(0.1f, 5f) .OnComplete(new TweenCallback(ShowB)); } private void ShowB() {
}
DOTween的主要作用不是为了做延时调度用的,但是其带有这个功能,且思想非常酷。
VP_Timer 实现定时器
vp_Timer.Handle Timer = new vp_Timer.Handle();
vp_Timer.In(5, new vp_Timer.Callback(() =>
{
Timer.Cancel();
ShowB();
}), Timer);
VP_Timer是某天下午,在网上搜索中,无意找到了,其简洁的用法,着实让人眼前一亮。 目前项目中,涉及的地方超过10处,极大的方便了延时功能的实现,非常不错。 也为项目节约了大量的时间。
上面的几种方法,在实战Unity3D项目中,均有所涉及,我本人用的比较多的是DOTWeen和VP_Timer,这2个不依赖继承MonoBehaviour,相对比较灵活,且其是商业项目,封装还是挺给力的。
如果大家还有其他实现方法,也欢迎分享,我们共同提高、进步。
dotween unity 延时_unity延时功能的几种实现相关推荐
- dotween unity 延时_3D俯视角射击——用Unity还原东方弹幕(上)
作者:QXYO 前言 之前我们的专栏中介绍过2D的俯视角射击,这次就来试试在3D场景下的实现.移动射击的实现方法差不多,所以本次的主要目标是在3D场景下还原东方的符卡(弹幕)效果. 我们先来看看最终结 ...
- Unity实现在线宝箱功能
Unity实现在线宝箱功能 首先让明确一点OnlineBox其实是一个Button组件. 先实现一个功能是点击宝箱,更换打开成宝箱的图片,并播放对应的音效: /// <summary>// ...
- Unity网络多玩家游戏开发教程第1章Unity自带网络功能
Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说 ...
- 自定义js 延时函数调用延时函sleep();
自定义js 延时函数调用延时函sleep(): //调用延时函数 2秒后,程序往下执行: sleep(2000)://自定义js 延时 var t = Date.now(); function sle ...
- 深入分析Android中Activity的onStop和onDestroy()回调延时及延时10s的问题
一.起因 很久以前接手的一个比较老的项目中,是使用Activity的名字作为tag来标识网络请求的.在Activity的onDestroy回调中根据这个标识取消所有的网络请求.但是在部分页面,出现了比 ...
- c语言延时时间计算器,RC延时电路延时时间计算
RC延时电路延时时间计算 计算公式: 延时时间= - R*C*ln((E-V)/E) 其中: "-"是负号; 电阻R和电容C是串联,R的单位为欧姆,C的单位为F; E为串联电阻和电 ...
- unity解锁_Unity与PiXYZ软件合作以解锁CAD数据以进行实时开发
unity解锁 Together, Unity and PiXYZ deliver a solution that makes creating real-time interactive and v ...
- Unity webgl 弹窗直播功能
unity弹窗播放直播功能,Button事件打开弹窗播放实时视频,动态关闭. 实现思路是unity发送消息给打包出来的Html,在网页代码里面弹窗和关闭视频.网页弹出一个layer层, 层里面内嵌一个 ...
- Unity 3D 实现拾取物品功能(一)
Unity 3D 实现拾取物品功能(一) 刚刚接触Unity不久,为了记录自己学习的过程.我决定写写博客,哈哈哈.在网上看了一些拾取物品的实现原理之后,自己摸索了一下,写了个小Demo,下面来介绍一下 ...
最新文章
- 腾讯的模板引擎---artTemplate
- i2c Linux 动态 波特率,如何在Linux中设置i2c总线的波特率?
- 本地缓存需要高时效性怎么办_太难为我了,为了这份P7岗offer,我承受了7轮面试...
- 【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三
- android 之 百度地图
- ENSP配置 实例五 RIP配置
- 微服务架构的优缺点_微服务架构DNS服务注册与发现实现原理
- 本地文件上传至docker容器
- Windows句柄和指针的区别
- 从零开始学前端:上节课案例+break,continue以及while和do while --- 今天你学习了吗?(JS:Day5)
- 三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方
- 谷歌学术镜像_Google镜像站
- 3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力
- [Qt笔记]设置VS2015下的应用工程图标
- rabbitmq:publisher confirms
- 【智能电视必装软件】小鲸电视、hdp直播国庆假期经典好剧随心看
- 上拉刷新下拉加载的实现
- java 电梯类图,电梯控制系统(用UML图理解)
- 经典乘法口诀表(C++)
- 这个将996反对到极致的网站,在GitHub上的Star数已经狂飙到 10 万+了