Invoke和InvokeRepeating都是MonoBehaviour类中的方法.由于并不一定是始终执行,并且每帧反复执行,所以这两个方法基本写在Start()
方法里,利用调用函数名来起到延时执行,或者(不)延时指定频率执行方法的效果.
Invoke
- Invoke(methodName: string, time: float): void;
- methodName:方法名
- time:多少秒后执行
InvokeRepeating
- InvokeRepeating(methodName: string, time: float, repeatRate: float):void;
- methodName:方法名
- time:多少秒后执行
- repeatRate:重复执行间隔
还有两个重要的方法:
IsInvoking:用来判断某方法是否被延时,即将执行
CancelInvoke:取消该脚本上的所有延时方法
代码:
using UnityEngine;
using System;
public class SystemTime : MonoBehaviour
{
DateTime curr_time;//当前时间
int count;//执行重复方法的次数
void Start ()
{
Invoke("InvokeTest", 1.0f);//延时1秒才执行(只执行一次)
InvokeRepeating("InvokeRepeatingTest", 2.0f, 1.0f);//延时2秒开始执行,之后每隔1秒执行一次
}
private void InvokeTest()
{
curr_time = System.DateTime.Now;
Debug.Log("执行延时方法:" + curr_time );
}
private void InvokeRepeatingTest()
{
curr_time= System.DateTime.Now;
Debug.Log("执行重复方法:" + curr_time );
count += 1;
if(count==5)
CancelInvoke();//取消该脚本上的所有延时方法
}
}