Unity中MonoBehavior类中的延迟函数Invoke详解(含案例)

Unity中Invoke延迟函数详解

一、什么是延迟函数

含义:会延时执行的函数,我们可以自己设定延时要执行的函数和具体延时的时间,是MonoBehaviour基类中实现好的方法

二、延迟函数的使用

1.延迟函数

(1)关键字   Invoke

(2)参数

参数一:函数名 字符串
参数二:延迟时间 秒为单位

(3)注意
延时函数第一个参数传入的是函数名字符串

延时函数没办法传入参数 只有包裹一层
函数名必须是该脚本上申明的函数

2.延迟重复执行函数

(1)关键字   InvokeRepeating

(2)参数

参数一:函数名字符串
参数二:第一次执行的延迟时间
参数三:之后每次执行的间隔时间

(3)注意

延时函数第一个参数传入的是函数名字符串
延时函数没办法传入参数 只有包裹一层
函数名必须是该脚本上申明的函数

3.取消延迟函数

(1)关键字   CancelInvoke

(2)使用情景

【1】取消该脚本上的所有延时函数执行

CancelInvoke();

【2】指定函数名取消

Tips:只要取消了指定延迟 不管之前该函数开启了多少次 延迟执行 都会统一取消

CancelInvoke("DelayDoSomething");

4.判断是否有延迟函数

if( IsInvoking() )
{
    print("存在延迟函数");
}
if( IsInvoking("DelayDoSomething") )
{
    print("存在延迟函数DelayDoSomething");
}


三、延迟函数受对象失活销毁影响

1.脚本依附对象失活 或者 脚本自己失活——延迟函数可以继续执行 不会受到影响

2.脚本依附对象销毁或者脚本移除——延迟函数无法继续执行


四、练习题一

1.题目

       利用延时函数实现一个计秒器

2.实现

 void Start()
 {
     InvokeRepeating("DelayFun", 0, 1);
 }

private void DelayFun()
{
    print(time + "秒");
    ++time;
}


五、练习题二

1.题目

        请用两种方式延时销毁一个指定对象

2.实现

方法一:

Destroy(this.gameObject, 5);

方法二:

 Invoke("DelayDes", 5);
......
 private void DelayDes()
 {
     Destroy(this.gameObject);
 }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值