一、使用 Update 定时调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// 计时器
public float _Timer = 0f;
// 时间
public float _Time = 5f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
_Timer += Time.deltaTime;
if (_Timer >= _Time)
{
OnAction();
_Timer = 0f; // 恢复
return;
}
}
private void OnAction()
{
// 执行代码
Debug.Log("执行代码");
}
}
二、使用 Invoke 定时调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Invoke("OnAction", 5f);
}
// Update is called once per frame
void Update()
{
}
private void OnAction()
{
// 执行代码
Debug.Log("执行代码");
}
}
二、使用协程定时调用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class Test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
StartCoroutine("OnAction");
}
// Update is called once per frame
void Update()
{
}
private IEnumerator OnAction()
{
yield return new WaitForSeconds(5f);
// 执行代码
Debug.Log("执行代码");
}
}
三、使用DOTween定时调用
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// 计时器
public float _Timer = 0f;
// 时间
public float _Time = 5f;
// Start is called before the first frame update
void Start()
{
DOTween.To(() => _Timer, x => _Timer = x, 1f, _Time).OnStepComplete(() =>
{
// 执行代码
Debug.Log("执行代码");
});
}
// Update is called once per frame
void Update()
{
}
}