当前位置:   article > 正文

关于Unity延时的一些方法_unity等待几秒执行操作

unity等待几秒执行操作

Unity中,延时有几种常用方法。

1、使用Invoke、InvokeRepeating函数,可延迟调用或重复调用特定的函数。

(1)使用Invoke:
 

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. private void Start()
  5. {
  6. Invoke("DelayedMethod", 3f);
  7. }
  8. private void DelayedMethod()
  9. {
  10. Debug.Log("Delayed method executed!");
  11. }
  12. }

本案例中,DelayedMethod函数将在3s后执行。

(2)使用InvokeRepeating:

  1. using UnityEngine;
  2. public class Example : MonoBehaviour
  3. {
  4. private void Start()
  5. {
  6. InvokeRepeating("RepeatedMethod", 2f, 1f);
  7. }
  8. private void RepeatedMethod()
  9. {
  10. Debug.Log("Repeated method executed!");
  11. }
  12. }

本案例中,RepeatedMethod函数将在2s后开始执行,并且之后每个1s重复执行一次。

使用以上两种方法,可以通过以下方法检测或停止Invoke的状态。

(1)IsInvoking() 只要有Invoke在运行,就返回true.

(2)IsInvoking(函数名) 当这个函数正在Invoke的时候返回true

(3) CancelInvoke(函数名) 取消所有Invoke或者对应Invoke

如上面的InvokeRepeating,使用CancelInvoke("RepeatedMethod");即可以停止Invoke;

2、使用协程Coroutine实现延时

  1. public class delay : MonoBehaviour
  2. {
  3. // Start is called before the first frame update
  4. void Start()
  5. {
  6. StartCoroutine(DelayDo());
  7. }
  8. IEnumerator DelayDo()
  9. {
  10. yield return new WaitForSeconds(2f);
  11. Debug.Log("2秒后执行这里");
  12. }
  13. }

如本案例使用协程延时2s执行后续代码。

3、使用Time.time来记录时间,并通过计算时间差来实现延时。

  1. using UnityEngine;
  2. public class DelayExample : MonoBehaviour
  3. {
  4. private float startTime;
  5. private float delayTime = 3f; // 延时时间为3秒
  6. private void Start()
  7. {
  8. // 记录开始时间
  9. startTime = Time.time;
  10. }
  11. private void Update()
  12. {
  13. // 计算时间差
  14. float elapsedTime = Time.time - startTime;
  15. // 判断是否达到延时时间
  16. if (elapsedTime >= delayTime)
  17. {
  18. // 延时时间已经达到,执行延时后的操作
  19. DoDelayedAction();
  20. }
  21. }
  22. private void DoDelayedAction()
  23. {
  24. // 在这里执行延时后的操作
  25. Debug.Log("延时操作已完成");
  26. }
  27. }

4、使用Time.deltaTime来进行时间累加,从而实现延时。

  1. using UnityEngine;
  2. public class DelayExample : MonoBehaviour
  3. {
  4. private float delayTime = 3f; // 延时时间为3秒
  5. private float elapsedTime;
  6. private void Update()
  7. {
  8. // 累加时间
  9. elapsedTime += Time.deltaTime;
  10. // 判断是否达到延时时间
  11. if (elapsedTime >= delayTime)
  12. {
  13. // 延时时间已经达到,执行延时后的操作
  14. DoDelayedAction();
  15. }
  16. }
  17. private void DoDelayedAction()
  18. {
  19. // 在这里执行延时后的操作
  20. Debug.Log("延时操作已完成");
  21. // 重置时间累加
  22. elapsedTime = 0f;
  23. }
  24. }

除了以上一些Unity自身可实现的一些方法,我们还可以用其它插件实现延时,如DOTween,Vision Timer。

5、DOTween。

  1. using UnityEngine;
  2. using DG.Tweening;
  3. public class DelayExample : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. // 延时2秒后执行回调函数
  8. float delayTime = 2f;
  9. DOTween.To(() => 0, x => { }, 0, delayTime)
  10. .OnComplete(() =>
  11. {
  12. Debug.Log("延时结束!");
  13. });
  14. }
  15. }

6、Vision Timer。

  1. vp_Timer.Handle Timer = new vp_Timer.Handle();
  2. vp_Timer.In(2, new vp_Timer.Callback(() =>{Timer.Cancel();//此处执行延时后函数 }), Timer);

以上就是一些常用的延时方法,不知道还没有其它的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/89806
推荐阅读
相关标签
  

闽ICP备14008679号