Update()定时执行某方法 - zLulus/My_Note GitHub Wiki
在Update()每帧执行方法中,个别语句多帧执行一次
eg.倒计时
方法1:Time.time
计时不精准
执行间隔可以修改
//下次修改时间
private float nextTime = 0;
private void Update()
{
if (Time.time >= nextTime)
{
Debug.Log($"{nextTime}");
//间隔1s
nextTime = Time.time + 1;
}
}
方法2:Time.deltaTime
计时不精准
执行间隔可以修改
//累计时间
private float totalTime = 0;
private void Update()
{
//累计每帧间隔
totalTime += Time.deltaTime;
if (totalTime >= 1)
{
//归零
totalTime = 0;
}
}
方法3:InvokeRepeating
适合每隔固定时间(repeatRate不修改)重复执行的任务
//重复调用
//(方法名,第一次执行时间,执行时间间隔)
public void InvokeRepeating(string methodName, float time, float repeatRate);
private void Start()
{
InvokeRepeating("Timer", 5, 1);
}
private void Timer()
{
//定时任务
if (condition==true)
{
//取消调用
CancelInvoke("Timer");
}
}
补充说明:延迟执行
public void Invoke(string methodName, float time);